use shared::*;

use crate::blocks::Block;
use crate::*;

pub fn resolve(id: usize) -> Option<Block> {
    let state = (id & 0xF) as u8;
    match (id >> 4, state) {
        (0, 0) => Some(Block::Air {}),
        (1, 0) => Some(Block::Stone {}),
        (1, 1) => Some(Block::Granite {}),
        (1, 2) => Some(Block::PolishedGranite {}),
        (1, 3) => Some(Block::Diorite {}),
        (1, 4) => Some(Block::PolishedDiorite {}),
        (1, 5) => Some(Block::Andesite {}),
        (1, 6) => Some(Block::PolishedAndesite {}),
        (2, 0) => Some(Block::GrassBlock { snowy: false }),
        (3, 0) => Some(Block::Dirt {}),
        (3, 1) => Some(Block::CoarseDirt {}),
        (3, 2) => Some(Block::Podzol { snowy: false }),
        (4, 0) => Some(Block::Cobblestone {}),
        (5, 0) => Some(Block::OakPlanks {}),
        (5, 1) => Some(Block::SprucePlanks {}),
        (5, 2) => Some(Block::BirchPlanks {}),
        (5, 3) => Some(Block::JunglePlanks {}),
        (5, 4) => Some(Block::AcaciaPlanks {}),
        (5, 5) => Some(Block::DarkOakPlanks {}),
        (6, 0) => Some(Block::OakSapling { stage: 0 }),
        (6, 1) => Some(Block::SpruceSapling { stage: 0 }),
        (6, 2) => Some(Block::BirchSapling { stage: 0 }),
        (6, 3) => Some(Block::JungleSapling { stage: 0 }),
        (6, 4) => Some(Block::AcaciaSapling { stage: 0 }),
        (6, 5) => Some(Block::DarkOakSapling { stage: 0 }),
        (6, 8) => Some(Block::OakSapling { stage: 1 }),
        (6, 9) => Some(Block::SpruceSapling { stage: 1 }),
        (6, 10) => Some(Block::BirchSapling { stage: 1 }),
        (6, 11) => Some(Block::JungleSapling { stage: 1 }),
        (6, 12) => Some(Block::AcaciaSapling { stage: 1 }),
        (6, 13) => Some(Block::DarkOakSapling { stage: 1 }),
        (7, 0) => Some(Block::Bedrock {}),
        (8, 0..=15) => Some(Block::Water { level: state }),
        (9, 0..=15) => Some(Block::Water { level: state }),
        (10, 0..=15) => Some(Block::Lava { level: state }),
        (11, 0..=15) => Some(Block::Lava { level: state }),
        (12, 0) => Some(Block::Sand {}),
        (12, 1) => Some(Block::RedSand {}),
        (13, 0) => Some(Block::Gravel {}),
        (14, 0) => Some(Block::GoldOre {}),
        (15, 0) => Some(Block::IronOre {}),
        (16, 0) => Some(Block::CoalOre {}),
        (17, 0) => Some(Block::OakLog { axis: Axis::Y }),
        (17, 1) => Some(Block::SpruceLog { axis: Axis::Y }),
        (17, 2) => Some(Block::BirchLog { axis: Axis::Y }),
        (17, 3) => Some(Block::JungleLog { axis: Axis::Y }),
        (17, 4) => Some(Block::OakLog { axis: Axis::X }),
        (17, 5) => Some(Block::SpruceLog { axis: Axis::X }),
        (17, 6) => Some(Block::BirchLog { axis: Axis::X }),
        (17, 7) => Some(Block::JungleLog { axis: Axis::X }),
        (17, 8) => Some(Block::OakLog { axis: Axis::Z }),
        (17, 9) => Some(Block::SpruceLog { axis: Axis::Z }),
        (17, 10) => Some(Block::BirchLog { axis: Axis::Z }),
        (17, 11) => Some(Block::JungleLog { axis: Axis::Z }),
        (17, 12) => Some(Block::OakWood { axis: Axis::Y }),
        (17, 13) => Some(Block::SpruceWood { axis: Axis::Y }),
        (17, 14) => Some(Block::BirchWood { axis: Axis::Y }),
        (17, 15) => Some(Block::JungleWood { axis: Axis::Y }),
        (18, 0) => Some(Block::OakLeaves { persistent: false, distance: 1, waterlogged: false }),
        (18, 1) => Some(Block::SpruceLeaves { persistent: false, distance: 1, waterlogged: false }),
        (18, 2) => Some(Block::BirchLeaves { persistent: false, distance: 1, waterlogged: false }),
        (18, 3) => Some(Block::JungleLeaves { persistent: false, distance: 1, waterlogged: false }),
        (18, 4) => Some(Block::OakLeaves { persistent: true, distance: 1, waterlogged: false }),
        (18, 5) => Some(Block::SpruceLeaves { persistent: true, distance: 1, waterlogged: false }),
        (18, 6) => Some(Block::BirchLeaves { persistent: true, distance: 1, waterlogged: false }),
        (18, 7) => Some(Block::JungleLeaves { persistent: true, distance: 1, waterlogged: false }),
        (18, 8) => Some(Block::OakLeaves { persistent: false, distance: 1, waterlogged: false }),
        (18, 9) => Some(Block::SpruceLeaves { persistent: false, distance: 1, waterlogged: false }),
        (18, 10) => Some(Block::BirchLeaves { persistent: false, distance: 1, waterlogged: false }),
        (18, 11) => Some(Block::JungleLeaves { persistent: false, distance: 1, waterlogged: false }),
        (18, 12) => Some(Block::OakLeaves { persistent: true, distance: 1, waterlogged: false }),
        (18, 13) => Some(Block::SpruceLeaves { persistent: true, distance: 1, waterlogged: false }),
        (18, 14) => Some(Block::BirchLeaves { persistent: true, distance: 1, waterlogged: false }),
        (18, 15) => Some(Block::JungleLeaves { persistent: true, distance: 1, waterlogged: false }),
        (19, 0) => Some(Block::Sponge {}),
        (19, 1) => Some(Block::WetSponge {}),
        (20, 0) => Some(Block::Glass {}),
        (21, 0) => Some(Block::LapisOre {}),
        (22, 0) => Some(Block::LapisBlock {}),
        (23, 0) => Some(Block::Dispenser { triggered: false, facing: Direction::Down }),
        (23, 1) => Some(Block::Dispenser { triggered: false, facing: Direction::Up }),
        (23, 2) => Some(Block::Dispenser { triggered: false, facing: Direction::North }),
        (23, 3) => Some(Block::Dispenser { triggered: false, facing: Direction::South }),
        (23, 4) => Some(Block::Dispenser { triggered: false, facing: Direction::West }),
        (23, 5) => Some(Block::Dispenser { triggered: false, facing: Direction::East }),
        (23, 8) => Some(Block::Dispenser { triggered: true, facing: Direction::Down }),
        (23, 9) => Some(Block::Dispenser { triggered: true, facing: Direction::Up }),
        (23, 10) => Some(Block::Dispenser { triggered: true, facing: Direction::North }),
        (23, 11) => Some(Block::Dispenser { triggered: true, facing: Direction::South }),
        (23, 12) => Some(Block::Dispenser { triggered: true, facing: Direction::West }),
        (23, 13) => Some(Block::Dispenser { triggered: true, facing: Direction::East }),
        (24, 0) => Some(Block::Sandstone {}),
        (24, 1) => Some(Block::ChiseledSandstone {}),
        (24, 2) => Some(Block::CutSandstone {}),
        (25, 0) => Some(Block::NoteBlock { instrument: NoteBlockInstrument::Harp, note: 0, powered: true }),
        (26, 0) => Some(Block::RedBed { part: BedPart::Foot, facing: Direction::South, occupied: false }),
        (26, 1) => Some(Block::RedBed { part: BedPart::Foot, facing: Direction::West, occupied: false }),
        (26, 2) => Some(Block::RedBed { part: BedPart::Foot, facing: Direction::North, occupied: false }),
        (26, 3) => Some(Block::RedBed { part: BedPart::Foot, facing: Direction::East, occupied: false }),
        (26, 4) => Some(Block::RedBed { part: BedPart::Foot, facing: Direction::South, occupied: true }),
        (26, 5) => Some(Block::RedBed { part: BedPart::Foot, facing: Direction::West, occupied: true }),
        (26, 6) => Some(Block::RedBed { part: BedPart::Foot, facing: Direction::North, occupied: true }),
        (26, 7) => Some(Block::RedBed { part: BedPart::Foot, facing: Direction::East, occupied: true }),
        (26, 8) => Some(Block::RedBed { part: BedPart::Head, facing: Direction::South, occupied: false }),
        (26, 9) => Some(Block::RedBed { part: BedPart::Head, facing: Direction::West, occupied: false }),
        (26, 10) => Some(Block::RedBed { part: BedPart::Head, facing: Direction::North, occupied: false }),
        (26, 11) => Some(Block::RedBed { part: BedPart::Head, facing: Direction::East, occupied: false }),
        (26, 12) => Some(Block::RedBed { part: BedPart::Head, facing: Direction::South, occupied: true }),
        (26, 13) => Some(Block::RedBed { part: BedPart::Head, facing: Direction::West, occupied: true }),
        (26, 14) => Some(Block::RedBed { part: BedPart::Head, facing: Direction::North, occupied: true }),
        (26, 15) => Some(Block::RedBed { part: BedPart::Head, facing: Direction::East, occupied: true }),
        (27, 0) => Some(Block::PoweredRail { shape: RailShape::NorthSouth, powered: false, waterlogged: false }),
        (27, 1) => Some(Block::PoweredRail { shape: RailShape::EastWest, powered: false, waterlogged: false }),
        (27, 2) => Some(Block::PoweredRail { shape: RailShape::AscendingEast, powered: false, waterlogged: false }),
        (27, 3) => Some(Block::PoweredRail { shape: RailShape::AscendingWest, powered: false, waterlogged: false }),
        (27, 4) => Some(Block::PoweredRail { shape: RailShape::AscendingNorth, powered: false, waterlogged: false }),
        (27, 5) => Some(Block::PoweredRail { shape: RailShape::AscendingSouth, powered: false, waterlogged: false }),
        (27, 8) => Some(Block::PoweredRail { shape: RailShape::NorthSouth, powered: true, waterlogged: false }),
        (27, 9) => Some(Block::PoweredRail { shape: RailShape::EastWest, powered: true, waterlogged: false }),
        (27, 10) => Some(Block::PoweredRail { shape: RailShape::AscendingEast, powered: true, waterlogged: false }),
        (27, 11) => Some(Block::PoweredRail { shape: RailShape::AscendingWest, powered: true, waterlogged: false }),
        (27, 12) => Some(Block::PoweredRail { shape: RailShape::AscendingNorth, powered: true, waterlogged: false }),
        (27, 13) => Some(Block::PoweredRail { shape: RailShape::AscendingSouth, powered: true, waterlogged: false }),
        (28, 0) => Some(Block::DetectorRail { shape: RailShape::NorthSouth, powered: false, waterlogged: false }),
        (28, 1) => Some(Block::DetectorRail { shape: RailShape::EastWest, powered: false, waterlogged: false }),
        (28, 2) => Some(Block::DetectorRail { shape: RailShape::AscendingEast, powered: false, waterlogged: false }),
        (28, 3) => Some(Block::DetectorRail { shape: RailShape::AscendingWest, powered: false, waterlogged: false }),
        (28, 4) => Some(Block::DetectorRail { shape: RailShape::AscendingNorth, powered: false, waterlogged: false }),
        (28, 5) => Some(Block::DetectorRail { shape: RailShape::AscendingSouth, powered: false, waterlogged: false }),
        (28, 8) => Some(Block::DetectorRail { shape: RailShape::NorthSouth, powered: true, waterlogged: false }),
        (28, 9) => Some(Block::DetectorRail { shape: RailShape::EastWest, powered: true, waterlogged: false }),
        (28, 10) => Some(Block::DetectorRail { shape: RailShape::AscendingEast, powered: true, waterlogged: false }),
        (28, 11) => Some(Block::DetectorRail { shape: RailShape::AscendingWest, powered: true, waterlogged: false }),
        (28, 12) => Some(Block::DetectorRail { shape: RailShape::AscendingNorth, powered: true, waterlogged: false }),
        (28, 13) => Some(Block::DetectorRail { shape: RailShape::AscendingSouth, powered: true, waterlogged: false }),
        (29, 0) => Some(Block::StickyPiston { facing: Direction::Down, extended: false }),
        (29, 1) => Some(Block::StickyPiston { facing: Direction::Up, extended: false }),
        (29, 2) => Some(Block::StickyPiston { facing: Direction::North, extended: false }),
        (29, 3) => Some(Block::StickyPiston { facing: Direction::South, extended: false }),
        (29, 4) => Some(Block::StickyPiston { facing: Direction::West, extended: false }),
        (29, 5) => Some(Block::StickyPiston { facing: Direction::East, extended: false }),
        (29, 8) => Some(Block::StickyPiston { facing: Direction::Down, extended: true }),
        (29, 9) => Some(Block::StickyPiston { facing: Direction::Up, extended: true }),
        (29, 10) => Some(Block::StickyPiston { facing: Direction::North, extended: true }),
        (29, 11) => Some(Block::StickyPiston { facing: Direction::South, extended: true }),
        (29, 12) => Some(Block::StickyPiston { facing: Direction::West, extended: true }),
        (29, 13) => Some(Block::StickyPiston { facing: Direction::East, extended: true }),
        (30, 0) => Some(Block::Cobweb {}),
        (31, 0) => Some(Block::DeadBush {}),
        (31, 1) => Some(Block::Grass {}),
        (31, 2) => Some(Block::Fern {}),
        (32, 0) => Some(Block::DeadBush {}),
        (33, 0) => Some(Block::Piston { facing: Direction::Down, extended: false }),
        (33, 1) => Some(Block::Piston { facing: Direction::Up, extended: false }),
        (33, 2) => Some(Block::Piston { facing: Direction::North, extended: false }),
        (33, 3) => Some(Block::Piston { facing: Direction::South, extended: false }),
        (33, 4) => Some(Block::Piston { facing: Direction::West, extended: false }),
        (33, 5) => Some(Block::Piston { facing: Direction::East, extended: false }),
        (33, 8) => Some(Block::Piston { facing: Direction::Down, extended: true }),
        (33, 9) => Some(Block::Piston { facing: Direction::Up, extended: true }),
        (33, 10) => Some(Block::Piston { facing: Direction::North, extended: true }),
        (33, 11) => Some(Block::Piston { facing: Direction::South, extended: true }),
        (33, 12) => Some(Block::Piston { facing: Direction::West, extended: true }),
        (33, 13) => Some(Block::Piston { facing: Direction::East, extended: true }),
        (34, 0) => Some(Block::PistonHead { short: false, facing: Direction::Down, type_: PistonType::Normal }),
        (34, 1) => Some(Block::PistonHead { short: false, facing: Direction::Up, type_: PistonType::Normal }),
        (34, 2) => Some(Block::PistonHead { short: false, facing: Direction::North, type_: PistonType::Normal }),
        (34, 3) => Some(Block::PistonHead { short: false, facing: Direction::South, type_: PistonType::Normal }),
        (34, 4) => Some(Block::PistonHead { short: false, facing: Direction::West, type_: PistonType::Normal }),
        (34, 5) => Some(Block::PistonHead { short: false, facing: Direction::East, type_: PistonType::Normal }),
        (34, 8) => Some(Block::PistonHead { short: false, facing: Direction::Down, type_: PistonType::Sticky }),
        (34, 9) => Some(Block::PistonHead { short: false, facing: Direction::Up, type_: PistonType::Sticky }),
        (34, 10) => Some(Block::PistonHead { short: false, facing: Direction::North, type_: PistonType::Sticky }),
        (34, 11) => Some(Block::PistonHead { short: false, facing: Direction::South, type_: PistonType::Sticky }),
        (34, 12) => Some(Block::PistonHead { short: false, facing: Direction::West, type_: PistonType::Sticky }),
        (34, 13) => Some(Block::PistonHead { short: false, facing: Direction::East, type_: PistonType::Sticky }),
        (35, 0) => Some(Block::WhiteWool {}),
        (35, 1) => Some(Block::OrangeWool {}),
        (35, 2) => Some(Block::MagentaWool {}),
        (35, 3) => Some(Block::LightBlueWool {}),
        (35, 4) => Some(Block::YellowWool {}),
        (35, 5) => Some(Block::LimeWool {}),
        (35, 6) => Some(Block::PinkWool {}),
        (35, 7) => Some(Block::GrayWool {}),
        (35, 8) => Some(Block::LightGrayWool {}),
        (35, 9) => Some(Block::CyanWool {}),
        (35, 10) => Some(Block::PurpleWool {}),
        (35, 11) => Some(Block::BlueWool {}),
        (35, 12) => Some(Block::BrownWool {}),
        (35, 13) => Some(Block::GreenWool {}),
        (35, 14) => Some(Block::RedWool {}),
        (35, 15) => Some(Block::BlackWool {}),
        (36, 0) => Some(Block::MovingPiston { facing: Direction::Down, type_: PistonType::Normal }),
        (36, 1) => Some(Block::MovingPiston { facing: Direction::Up, type_: PistonType::Normal }),
        (36, 2) => Some(Block::MovingPiston { facing: Direction::North, type_: PistonType::Normal }),
        (36, 3) => Some(Block::MovingPiston { facing: Direction::South, type_: PistonType::Normal }),
        (36, 4) => Some(Block::MovingPiston { facing: Direction::West, type_: PistonType::Normal }),
        (36, 5) => Some(Block::MovingPiston { facing: Direction::East, type_: PistonType::Normal }),
        (36, 8) => Some(Block::MovingPiston { facing: Direction::Down, type_: PistonType::Sticky }),
        (36, 9) => Some(Block::MovingPiston { facing: Direction::Up, type_: PistonType::Sticky }),
        (36, 10) => Some(Block::MovingPiston { facing: Direction::North, type_: PistonType::Sticky }),
        (36, 11) => Some(Block::MovingPiston { facing: Direction::South, type_: PistonType::Sticky }),
        (36, 12) => Some(Block::MovingPiston { facing: Direction::West, type_: PistonType::Sticky }),
        (36, 13) => Some(Block::MovingPiston { facing: Direction::East, type_: PistonType::Sticky }),
        (37, 0) => Some(Block::Dandelion {}),
        (38, 0) => Some(Block::Poppy {}),
        (38, 1) => Some(Block::BlueOrchid {}),
        (38, 2) => Some(Block::Allium {}),
        (38, 3) => Some(Block::AzureBluet {}),
        (38, 4) => Some(Block::RedTulip {}),
        (38, 5) => Some(Block::OrangeTulip {}),
        (38, 6) => Some(Block::WhiteTulip {}),
        (38, 7) => Some(Block::PinkTulip {}),
        (38, 8) => Some(Block::OxeyeDaisy {}),
        (39, 0) => Some(Block::BrownMushroom {}),
        (40, 0) => Some(Block::RedMushroom {}),
        (41, 0) => Some(Block::GoldBlock {}),
        (42, 0) => Some(Block::IronBlock {}),
        (43, 0) => Some(Block::SmoothStoneSlab { type_: BlockHalf::Double, waterlogged: false }),
        (43, 1) => Some(Block::SandstoneSlab { type_: BlockHalf::Double, waterlogged: false }),
        (43, 2) => Some(Block::PetrifiedOakSlab { type_: BlockHalf::Double, waterlogged: false }),
        (43, 3) => Some(Block::CobblestoneSlab { type_: BlockHalf::Double, waterlogged: false }),
        (43, 4) => Some(Block::BrickSlab { type_: BlockHalf::Double, waterlogged: false }),
        (43, 5) => Some(Block::StoneBrickSlab { type_: BlockHalf::Double, waterlogged: false }),
        (43, 6) => Some(Block::NetherBrickSlab { type_: BlockHalf::Double, waterlogged: false }),
        (43, 7) => Some(Block::QuartzSlab { type_: BlockHalf::Double, waterlogged: false }),
        (43, 8) => Some(Block::SmoothStone {}),
        (43, 9) => Some(Block::SmoothSandstone {}),
        (43, 10) => Some(Block::PetrifiedOakSlab { type_: BlockHalf::Double, waterlogged: false }),
        (43, 11) => Some(Block::CobblestoneSlab { type_: BlockHalf::Double, waterlogged: false }),
        (43, 12) => Some(Block::BrickSlab { type_: BlockHalf::Double, waterlogged: false }),
        (43, 13) => Some(Block::StoneBrickSlab { type_: BlockHalf::Double, waterlogged: false }),
        (43, 14) => Some(Block::NetherBrickSlab { type_: BlockHalf::Double, waterlogged: false }),
        (43, 15) => Some(Block::SmoothQuartz {}),
        (44, 0) => Some(Block::SmoothStoneSlab { type_: BlockHalf::Bottom, waterlogged: false }),
        (44, 1) => Some(Block::SandstoneSlab { type_: BlockHalf::Bottom, waterlogged: false }),
        (44, 2) => Some(Block::PetrifiedOakSlab { type_: BlockHalf::Bottom, waterlogged: false }),
        (44, 3) => Some(Block::CobblestoneSlab { type_: BlockHalf::Bottom, waterlogged: false }),
        (44, 4) => Some(Block::BrickSlab { type_: BlockHalf::Bottom, waterlogged: false }),
        (44, 5) => Some(Block::StoneBrickSlab { type_: BlockHalf::Bottom, waterlogged: false }),
        (44, 6) => Some(Block::NetherBrickSlab { type_: BlockHalf::Bottom, waterlogged: false }),
        (44, 7) => Some(Block::QuartzSlab { type_: BlockHalf::Bottom, waterlogged: false }),
        (44, 8) => Some(Block::SmoothStoneSlab { type_: BlockHalf::Top, waterlogged: false }),
        (44, 9) => Some(Block::SandstoneSlab { type_: BlockHalf::Top, waterlogged: false }),
        (44, 10) => Some(Block::PetrifiedOakSlab { type_: BlockHalf::Top, waterlogged: false }),
        (44, 11) => Some(Block::CobblestoneSlab { type_: BlockHalf::Top, waterlogged: false }),
        (44, 12) => Some(Block::BrickSlab { type_: BlockHalf::Top, waterlogged: false }),
        (44, 13) => Some(Block::StoneBrickSlab { type_: BlockHalf::Top, waterlogged: false }),
        (44, 14) => Some(Block::NetherBrickSlab { type_: BlockHalf::Top, waterlogged: false }),
        (44, 15) => Some(Block::QuartzSlab { type_: BlockHalf::Top, waterlogged: false }),
        (45, 0) => Some(Block::Bricks {}),
        (46, 0) => Some(Block::Tnt { unstable: false }),
        (46, 1) => Some(Block::Tnt { unstable: true }),
        (47, 0) => Some(Block::Bookshelf {}),
        (48, 0) => Some(Block::MossyCobblestone {}),
        (49, 0) => Some(Block::Obsidian {}),
        (50, 1) => Some(Block::WallTorch { facing: Direction::East }),
        (50, 2) => Some(Block::WallTorch { facing: Direction::West }),
        (50, 3) => Some(Block::WallTorch { facing: Direction::South }),
        (50, 4) => Some(Block::WallTorch { facing: Direction::North }),
        (50, 5) => Some(Block::Torch {}),
        (51, 0..=15) => Some(Block::Fire { east: false, south: false, north: false, west: false, up: false, age: state }),
        (52, 0) => Some(Block::Spawner {}),
        (53, 0) => Some(Block::OakStairs { half: BlockHalf::Bottom, shape: StairShape::OuterRight, facing: Direction::East, waterlogged: false }),
        (53, 1) => Some(Block::OakStairs { half: BlockHalf::Bottom, shape: StairShape::OuterRight, facing: Direction::West, waterlogged: false }),
        (53, 2) => Some(Block::OakStairs { half: BlockHalf::Bottom, shape: StairShape::OuterRight, facing: Direction::South, waterlogged: false }),
        (53, 3) => Some(Block::OakStairs { half: BlockHalf::Bottom, shape: StairShape::OuterRight, facing: Direction::North, waterlogged: false }),
        (53, 4) => Some(Block::OakStairs { half: BlockHalf::Top, shape: StairShape::OuterRight, facing: Direction::East, waterlogged: false }),
        (53, 5) => Some(Block::OakStairs { half: BlockHalf::Top, shape: StairShape::OuterRight, facing: Direction::West, waterlogged: false }),
        (53, 6) => Some(Block::OakStairs { half: BlockHalf::Top, shape: StairShape::OuterRight, facing: Direction::South, waterlogged: false }),
        (53, 7) => Some(Block::OakStairs { half: BlockHalf::Top, shape: StairShape::OuterRight, facing: Direction::North, waterlogged: false }),
        (54, 2) => Some(Block::Chest { facing: Direction::North, type_: ChestType::Single, waterlogged: false }),
        (54, 3) => Some(Block::Chest { facing: Direction::South, type_: ChestType::Single, waterlogged: false }),
        (54, 4) => Some(Block::Chest { facing: Direction::West, type_: ChestType::Single, waterlogged: false }),
        (54, 5) => Some(Block::Chest { facing: Direction::East, type_: ChestType::Single, waterlogged: false }),
        (55, 0..=15) => Some(Block::RedstoneWire { east: RedstoneSide::None, south: RedstoneSide::None, north: RedstoneSide::None, west: RedstoneSide::None, power: state }),
        (56, 0) => Some(Block::DiamondOre {}),
        (57, 0) => Some(Block::DiamondBlock {}),
        (58, 0) => Some(Block::CraftingTable {}),
        (59, 0..=7) => Some(Block::Wheat { age: state }),
        (60, 0..=7) => Some(Block::Farmland { moisture: state }),
        (61, 2) => Some(Block::Furnace { facing: Direction::North, lit: false }),
        (61, 3) => Some(Block::Furnace { facing: Direction::South, lit: false }),
        (61, 4) => Some(Block::Furnace { facing: Direction::West, lit: false }),
        (61, 5) => Some(Block::Furnace { facing: Direction::East, lit: false }),
        (62, 2) => Some(Block::Furnace { facing: Direction::North, lit: true }),
        (62, 3) => Some(Block::Furnace { facing: Direction::South, lit: true }),
        (62, 4) => Some(Block::Furnace { facing: Direction::West, lit: true }),
        (62, 5) => Some(Block::Furnace { facing: Direction::East, lit: true }),
        (63, 0..=15) => Some(Block::OakSign { rotation: state, waterlogged: false }),
        (64, 0) => Some(Block::OakDoor { hinge: Side::Left, half: DoorHalf::Lower, powered: false, facing: Direction::East, open: false }),
        (64, 1) => Some(Block::OakDoor { hinge: Side::Left, half: DoorHalf::Lower, powered: false, facing: Direction::South, open: false }),
        (64, 2) => Some(Block::OakDoor { hinge: Side::Left, half: DoorHalf::Lower, powered: false, facing: Direction::West, open: false }),
        (64, 3) => Some(Block::OakDoor { hinge: Side::Left, half: DoorHalf::Lower, powered: false, facing: Direction::North, open: false }),
        (64, 4) => Some(Block::OakDoor { hinge: Side::Left, half: DoorHalf::Lower, powered: false, facing: Direction::East, open: true }),
        (64, 5) => Some(Block::OakDoor { hinge: Side::Left, half: DoorHalf::Lower, powered: false, facing: Direction::South, open: true }),
        (64, 6) => Some(Block::OakDoor { hinge: Side::Left, half: DoorHalf::Lower, powered: false, facing: Direction::West, open: true }),
        (64, 7) => Some(Block::OakDoor { hinge: Side::Left, half: DoorHalf::Lower, powered: false, facing: Direction::North, open: true }),
        (64, 8) => Some(Block::OakDoor { hinge: Side::Left, half: DoorHalf::Upper, powered: false, facing: Direction::East, open: false }),
        (64, 9) => Some(Block::OakDoor { hinge: Side::Right, half: DoorHalf::Upper, powered: false, facing: Direction::East, open: false }),
        (64, 10) => Some(Block::OakDoor { hinge: Side::Left, half: DoorHalf::Upper, powered: true, facing: Direction::East, open: false }),
        (64, 11) => Some(Block::OakDoor { hinge: Side::Right, half: DoorHalf::Upper, powered: true, facing: Direction::East, open: false }),
        (65, 2) => Some(Block::Ladder { facing: Direction::North, waterlogged: false }),
        (65, 3) => Some(Block::Ladder { facing: Direction::South, waterlogged: false }),
        (65, 4) => Some(Block::Ladder { facing: Direction::West, waterlogged: false }),
        (65, 5) => Some(Block::Ladder { facing: Direction::East, waterlogged: false }),
        (66, 0) => Some(Block::Rail { shape: RailShape::NorthSouth, waterlogged: false }),
        (66, 1) => Some(Block::Rail { shape: RailShape::EastWest, waterlogged: false }),
        (66, 2) => Some(Block::Rail { shape: RailShape::AscendingEast, waterlogged: false }),
        (66, 3) => Some(Block::Rail { shape: RailShape::AscendingWest, waterlogged: false }),
        (66, 4) => Some(Block::Rail { shape: RailShape::AscendingNorth, waterlogged: false }),
        (66, 5) => Some(Block::Rail { shape: RailShape::AscendingSouth, waterlogged: false }),
        (66, 6) => Some(Block::Rail { shape: RailShape::SouthEast, waterlogged: false }),
        (66, 7) => Some(Block::Rail { shape: RailShape::SouthWest, waterlogged: false }),
        (66, 8) => Some(Block::Rail { shape: RailShape::NorthWest, waterlogged: false }),
        (66, 9) => Some(Block::Rail { shape: RailShape::NorthEast, waterlogged: false }),
        (67, 0) => Some(Block::CobblestoneStairs { half: BlockHalf::Bottom, shape: StairShape::Straight, facing: Direction::East, waterlogged: false }),
        (67, 1) => Some(Block::CobblestoneStairs { half: BlockHalf::Bottom, shape: StairShape::Straight, facing: Direction::West, waterlogged: false }),
        (67, 2) => Some(Block::CobblestoneStairs { half: BlockHalf::Bottom, shape: StairShape::Straight, facing: Direction::South, waterlogged: false }),
        (67, 3) => Some(Block::CobblestoneStairs { half: BlockHalf::Bottom, shape: StairShape::Straight, facing: Direction::North, waterlogged: false }),
        (67, 4) => Some(Block::CobblestoneStairs { half: BlockHalf::Top, shape: StairShape::Straight, facing: Direction::East, waterlogged: false }),
        (67, 5) => Some(Block::CobblestoneStairs { half: BlockHalf::Top, shape: StairShape::Straight, facing: Direction::West, waterlogged: false }),
        (67, 6) => Some(Block::CobblestoneStairs { half: BlockHalf::Top, shape: StairShape::Straight, facing: Direction::South, waterlogged: false }),
        (67, 7) => Some(Block::CobblestoneStairs { half: BlockHalf::Top, shape: StairShape::Straight, facing: Direction::North, waterlogged: false }),
        (68, 2) => Some(Block::OakWallSign { facing: Direction::North, waterlogged: false }),
        (68, 3) => Some(Block::OakWallSign { facing: Direction::South, waterlogged: false }),
        (68, 4) => Some(Block::OakWallSign { facing: Direction::West, waterlogged: false }),
        (68, 5) => Some(Block::OakWallSign { facing: Direction::East, waterlogged: false }),
        (69, 0) => Some(Block::Lever { powered: false, facing: Direction::North, face: AttachedFace::Ceiling }),
        (69, 1) => Some(Block::Lever { powered: false, facing: Direction::East, face: AttachedFace::Wall }),
        (69, 2) => Some(Block::Lever { powered: false, facing: Direction::West, face: AttachedFace::Wall }),
        (69, 3) => Some(Block::Lever { powered: false, facing: Direction::South, face: AttachedFace::Wall }),
        (69, 4) => Some(Block::Lever { powered: false, facing: Direction::North, face: AttachedFace::Wall }),
        (69, 5) => Some(Block::Lever { powered: false, facing: Direction::East, face: AttachedFace::Floor }),
        (69, 6) => Some(Block::Lever { powered: false, facing: Direction::North, face: AttachedFace::Floor }),
        (69, 7) => Some(Block::Lever { powered: false, facing: Direction::East, face: AttachedFace::Ceiling }),
        (69, 8) => Some(Block::Lever { powered: true, facing: Direction::North, face: AttachedFace::Ceiling }),
        (69, 9) => Some(Block::Lever { powered: true, facing: Direction::East, face: AttachedFace::Wall }),
        (69, 10) => Some(Block::Lever { powered: true, facing: Direction::West, face: AttachedFace::Wall }),
        (69, 11) => Some(Block::Lever { powered: true, facing: Direction::South, face: AttachedFace::Wall }),
        (69, 12) => Some(Block::Lever { powered: true, facing: Direction::North, face: AttachedFace::Wall }),
        (69, 13) => Some(Block::Lever { powered: true, facing: Direction::East, face: AttachedFace::Floor }),
        (69, 14) => Some(Block::Lever { powered: true, facing: Direction::North, face: AttachedFace::Floor }),
        (69, 15) => Some(Block::Lever { powered: true, facing: Direction::East, face: AttachedFace::Ceiling }),
        (70, 0) => Some(Block::StonePressurePlate { powered: false }),
        (70, 1) => Some(Block::StonePressurePlate { powered: true }),
        (71, 0) => Some(Block::IronDoor { hinge: Side::Right, half: DoorHalf::Lower, powered: false, facing: Direction::East, open: false }),
        (71, 1) => Some(Block::IronDoor { hinge: Side::Right, half: DoorHalf::Lower, powered: false, facing: Direction::South, open: false }),
        (71, 2) => Some(Block::IronDoor { hinge: Side::Right, half: DoorHalf::Lower, powered: false, facing: Direction::West, open: false }),
        (71, 3) => Some(Block::IronDoor { hinge: Side::Right, half: DoorHalf::Lower, powered: false, facing: Direction::North, open: false }),
        (71, 4) => Some(Block::IronDoor { hinge: Side::Right, half: DoorHalf::Lower, powered: false, facing: Direction::East, open: true }),
        (71, 5) => Some(Block::IronDoor { hinge: Side::Right, half: DoorHalf::Lower, powered: false, facing: Direction::South, open: true }),
        (71, 6) => Some(Block::IronDoor { hinge: Side::Right, half: DoorHalf::Lower, powered: false, facing: Direction::West, open: true }),
        (71, 7) => Some(Block::IronDoor { hinge: Side::Right, half: DoorHalf::Lower, powered: false, facing: Direction::North, open: true }),
        (71, 8) => Some(Block::IronDoor { hinge: Side::Left, half: DoorHalf::Upper, powered: false, facing: Direction::East, open: false }),
        (71, 9) => Some(Block::IronDoor { hinge: Side::Right, half: DoorHalf::Upper, powered: false, facing: Direction::East, open: false }),
        (71, 10) => Some(Block::IronDoor { hinge: Side::Left, half: DoorHalf::Upper, powered: true, facing: Direction::East, open: false }),
        (71, 11) => Some(Block::IronDoor { hinge: Side::Right, half: DoorHalf::Upper, powered: true, facing: Direction::East, open: false }),
        (72, 0) => Some(Block::OakPressurePlate { powered: false }),
        (72, 1) => Some(Block::OakPressurePlate { powered: true }),
        (73, 0) => Some(Block::RedstoneOre { lit: false }),
        (74, 0) => Some(Block::RedstoneOre { lit: true }),
        (75, 1) => Some(Block::RedstoneWallTorch { facing: Direction::East, lit: false }),
        (75, 2) => Some(Block::RedstoneWallTorch { facing: Direction::West, lit: false }),
        (75, 3) => Some(Block::RedstoneWallTorch { facing: Direction::South, lit: false }),
        (75, 4) => Some(Block::RedstoneWallTorch { facing: Direction::North, lit: false }),
        (75, 5) => Some(Block::RedstoneTorch { lit: false }),
        (76, 1) => Some(Block::RedstoneWallTorch { facing: Direction::East, lit: true }),
        (76, 2) => Some(Block::RedstoneWallTorch { facing: Direction::West, lit: true }),
        (76, 3) => Some(Block::RedstoneWallTorch { facing: Direction::South, lit: true }),
        (76, 4) => Some(Block::RedstoneWallTorch { facing: Direction::North, lit: true }),
        (76, 5) => Some(Block::RedstoneTorch { lit: true }),
        (77, 0) => Some(Block::StoneButton { powered: false, facing: Direction::East, face: AttachedFace::Ceiling }),
        (77, 1) => Some(Block::StoneButton { powered: false, facing: Direction::East, face: AttachedFace::Wall }),
        (77, 2) => Some(Block::StoneButton { powered: false, facing: Direction::West, face: AttachedFace::Wall }),
        (77, 3) => Some(Block::StoneButton { powered: false, facing: Direction::South, face: AttachedFace::Wall }),
        (77, 4) => Some(Block::StoneButton { powered: false, facing: Direction::North, face: AttachedFace::Wall }),
        (77, 5) => Some(Block::StoneButton { powered: false, facing: Direction::East, face: AttachedFace::Floor }),
        (77, 8) => Some(Block::StoneButton { powered: true, facing: Direction::South, face: AttachedFace::Ceiling }),
        (77, 9) => Some(Block::StoneButton { powered: true, facing: Direction::East, face: AttachedFace::Wall }),
        (77, 10) => Some(Block::StoneButton { powered: true, facing: Direction::West, face: AttachedFace::Wall }),
        (77, 11) => Some(Block::StoneButton { powered: true, facing: Direction::South, face: AttachedFace::Wall }),
        (77, 12) => Some(Block::StoneButton { powered: true, facing: Direction::North, face: AttachedFace::Wall }),
        (77, 13) => Some(Block::StoneButton { powered: true, facing: Direction::South, face: AttachedFace::Floor }),
        (78, 0..=7) => Some(Block::Snow { layers: state + 1 }),
        (79, 0) => Some(Block::Ice {}),
        (80, 0) => Some(Block::SnowBlock {}),
        (81, 0..=15) => Some(Block::Cactus { age: state }),
        (82, 0) => Some(Block::Clay {}),
        (83, 0..=15) => Some(Block::SugarCane { age: state }),
        (84, 0) => Some(Block::Jukebox { has_record: false }),
        (84, 1) => Some(Block::Jukebox { has_record: true }),
        (85, 0) => Some(Block::OakFence { east: false, south: false, north: false, west: false, waterlogged: false }),
        (86, 0) => Some(Block::CarvedPumpkin { facing: Direction::South }),
        (86, 1) => Some(Block::CarvedPumpkin { facing: Direction::West }),
        (86, 2) => Some(Block::CarvedPumpkin { facing: Direction::North }),
        (86, 3) => Some(Block::CarvedPumpkin { facing: Direction::East }),
        (87, 0) => Some(Block::Netherrack {}),
        (88, 0) => Some(Block::SoulSand {}),
        (89, 0) => Some(Block::Glowstone {}),
        (90, 1) => Some(Block::NetherPortal { axis: Axis::X }),
        (90, 2) => Some(Block::NetherPortal { axis: Axis::Z }),
        (91, 0) => Some(Block::JackOLantern { facing: Direction::South }),
        (91, 1) => Some(Block::JackOLantern { facing: Direction::West }),
        (91, 2) => Some(Block::JackOLantern { facing: Direction::North }),
        (91, 3) => Some(Block::JackOLantern { facing: Direction::East }),
        (92, 0..=6) => Some(Block::Cake { bites: state }),
        (93, 0) => Some(Block::Repeater { delay: 1, facing: Direction::South, locked: false, powered: false }),
        (93, 1) => Some(Block::Repeater { delay: 1, facing: Direction::West, locked: false, powered: false }),
        (93, 2) => Some(Block::Repeater { delay: 1, facing: Direction::North, locked: false, powered: false }),
        (93, 3) => Some(Block::Repeater { delay: 1, facing: Direction::East, locked: false, powered: false }),
        (93, 4) => Some(Block::Repeater { delay: 2, facing: Direction::South, locked: false, powered: false }),
        (93, 5) => Some(Block::Repeater { delay: 2, facing: Direction::West, locked: false, powered: false }),
        (93, 6) => Some(Block::Repeater { delay: 2, facing: Direction::North, locked: false, powered: false }),
        (93, 7) => Some(Block::Repeater { delay: 2, facing: Direction::East, locked: false, powered: false }),
        (93, 8) => Some(Block::Repeater { delay: 3, facing: Direction::South, locked: false, powered: false }),
        (93, 9) => Some(Block::Repeater { delay: 3, facing: Direction::West, locked: false, powered: false }),
        (93, 10) => Some(Block::Repeater { delay: 3, facing: Direction::North, locked: false, powered: false }),
        (93, 11) => Some(Block::Repeater { delay: 3, facing: Direction::East, locked: false, powered: false }),
        (93, 12) => Some(Block::Repeater { delay: 4, facing: Direction::South, locked: false, powered: false }),
        (93, 13) => Some(Block::Repeater { delay: 4, facing: Direction::West, locked: false, powered: false }),
        (93, 14) => Some(Block::Repeater { delay: 4, facing: Direction::North, locked: false, powered: false }),
        (93, 15) => Some(Block::Repeater { delay: 4, facing: Direction::East, locked: false, powered: false }),
        (94, 0) => Some(Block::Repeater { delay: 1, facing: Direction::South, locked: false, powered: true }),
        (94, 1) => Some(Block::Repeater { delay: 1, facing: Direction::West, locked: false, powered: true }),
        (94, 2) => Some(Block::Repeater { delay: 1, facing: Direction::North, locked: false, powered: true }),
        (94, 3) => Some(Block::Repeater { delay: 1, facing: Direction::East, locked: false, powered: true }),
        (94, 4) => Some(Block::Repeater { delay: 2, facing: Direction::South, locked: false, powered: true }),
        (94, 5) => Some(Block::Repeater { delay: 2, facing: Direction::West, locked: false, powered: true }),
        (94, 6) => Some(Block::Repeater { delay: 2, facing: Direction::North, locked: false, powered: true }),
        (94, 7) => Some(Block::Repeater { delay: 2, facing: Direction::East, locked: false, powered: true }),
        (94, 8) => Some(Block::Repeater { delay: 3, facing: Direction::South, locked: false, powered: true }),
        (94, 9) => Some(Block::Repeater { delay: 3, facing: Direction::West, locked: false, powered: true }),
        (94, 10) => Some(Block::Repeater { delay: 3, facing: Direction::North, locked: false, powered: true }),
        (94, 11) => Some(Block::Repeater { delay: 3, facing: Direction::East, locked: false, powered: true }),
        (94, 12) => Some(Block::Repeater { delay: 4, facing: Direction::South, locked: false, powered: true }),
        (94, 13) => Some(Block::Repeater { delay: 4, facing: Direction::West, locked: false, powered: true }),
        (94, 14) => Some(Block::Repeater { delay: 4, facing: Direction::North, locked: false, powered: true }),
        (94, 15) => Some(Block::Repeater { delay: 4, facing: Direction::East, locked: false, powered: true }),
        (95, 0) => Some(Block::WhiteStainedGlass {}),
        (95, 1) => Some(Block::OrangeStainedGlass {}),
        (95, 2) => Some(Block::MagentaStainedGlass {}),
        (95, 3) => Some(Block::LightBlueStainedGlass {}),
        (95, 4) => Some(Block::YellowStainedGlass {}),
        (95, 5) => Some(Block::LimeStainedGlass {}),
        (95, 6) => Some(Block::PinkStainedGlass {}),
        (95, 7) => Some(Block::GrayStainedGlass {}),
        (95, 8) => Some(Block::LightGrayStainedGlass {}),
        (95, 9) => Some(Block::CyanStainedGlass {}),
        (95, 10) => Some(Block::PurpleStainedGlass {}),
        (95, 11) => Some(Block::BlueStainedGlass {}),
        (95, 12) => Some(Block::BrownStainedGlass {}),
        (95, 13) => Some(Block::GreenStainedGlass {}),
        (95, 14) => Some(Block::RedStainedGlass {}),
        (95, 15) => Some(Block::BlackStainedGlass {}),
        (96, 0) => Some(Block::OakTrapdoor { half: BlockHalf::Bottom, facing: Direction::North, open: false, powered: false, waterlogged: false }),
        (96, 1) => Some(Block::OakTrapdoor { half: BlockHalf::Bottom, facing: Direction::South, open: false, powered: false, waterlogged: false }),
        (96, 2) => Some(Block::OakTrapdoor { half: BlockHalf::Bottom, facing: Direction::West, open: false, powered: false, waterlogged: false }),
        (96, 3) => Some(Block::OakTrapdoor { half: BlockHalf::Bottom, facing: Direction::East, open: false, powered: false, waterlogged: false }),
        (96, 4) => Some(Block::OakTrapdoor { half: BlockHalf::Bottom, facing: Direction::North, open: true, powered: true, waterlogged: false }),
        (96, 5) => Some(Block::OakTrapdoor { half: BlockHalf::Bottom, facing: Direction::South, open: true, powered: true, waterlogged: false }),
        (96, 6) => Some(Block::OakTrapdoor { half: BlockHalf::Bottom, facing: Direction::West, open: true, powered: true, waterlogged: false }),
        (96, 7) => Some(Block::OakTrapdoor { half: BlockHalf::Bottom, facing: Direction::East, open: true, powered: true, waterlogged: false }),
        (96, 8) => Some(Block::OakTrapdoor { half: BlockHalf::Top, facing: Direction::North, open: false, powered: false, waterlogged: false }),
        (96, 9) => Some(Block::OakTrapdoor { half: BlockHalf::Top, facing: Direction::South, open: false, powered: false, waterlogged: false }),
        (96, 10) => Some(Block::OakTrapdoor { half: BlockHalf::Top, facing: Direction::West, open: false, powered: false, waterlogged: false }),
        (96, 11) => Some(Block::OakTrapdoor { half: BlockHalf::Top, facing: Direction::East, open: false, powered: false, waterlogged: false }),
        (96, 12) => Some(Block::OakTrapdoor { half: BlockHalf::Top, facing: Direction::North, open: true, powered: true, waterlogged: false }),
        (96, 13) => Some(Block::OakTrapdoor { half: BlockHalf::Top, facing: Direction::South, open: true, powered: true, waterlogged: false }),
        (96, 14) => Some(Block::OakTrapdoor { half: BlockHalf::Top, facing: Direction::West, open: true, powered: true, waterlogged: false }),
        (96, 15) => Some(Block::OakTrapdoor { half: BlockHalf::Top, facing: Direction::East, open: true, powered: true, waterlogged: false }),
        (97, 0) => Some(Block::InfestedStone {}),
        (97, 1) => Some(Block::InfestedCobblestone {}),
        (97, 2) => Some(Block::InfestedStoneBricks {}),
        (97, 3) => Some(Block::InfestedMossyStoneBricks {}),
        (97, 4) => Some(Block::InfestedCrackedStoneBricks {}),
        (97, 5) => Some(Block::InfestedChiseledStoneBricks {}),
        (98, 0) => Some(Block::StoneBricks {}),
        (98, 1) => Some(Block::MossyStoneBricks {}),
        (98, 2) => Some(Block::CrackedStoneBricks {}),
        (98, 3) => Some(Block::ChiseledStoneBricks {}),
        (99, 0) => Some(Block::BrownMushroomBlock { north: false, east: false, south: false, west: false, up: false, down: false }),
        (99, 1) => Some(Block::BrownMushroomBlock { north: true, east: false, south: false, west: true, up: true, down: false }),
        (99, 2) => Some(Block::BrownMushroomBlock { north: true, east: false, south: false, west: false, up: true, down: false }),
        (99, 3) => Some(Block::BrownMushroomBlock { north: true, east: true, south: false, west: false, up: true, down: false }),
        (99, 4) => Some(Block::BrownMushroomBlock { north: false, east: false, south: false, west: true, up: true, down: false }),
        (99, 5) => Some(Block::BrownMushroomBlock { north: false, east: false, south: false, west: false, up: true, down: false }),
        (99, 6) => Some(Block::BrownMushroomBlock { north: false, east: true, south: false, west: false, up: true, down: false }),
        (99, 7) => Some(Block::BrownMushroomBlock { north: false, east: false, south: true, west: true, up: true, down: false }),
        (99, 8) => Some(Block::BrownMushroomBlock { north: false, east: false, south: true, west: false, up: true, down: false }),
        (99, 9) => Some(Block::BrownMushroomBlock { north: false, east: true, south: true, west: false, up: true, down: false }),
        (99, 10) => Some(Block::MushroomStem { north: true, east: true, south: true, west: true, up: false, down: false }),
        (99, 14) => Some(Block::BrownMushroomBlock { north: true, east: true, south: true, west: true, up: true, down: true }),
        (99, 15) => Some(Block::MushroomStem { north: true, east: true, south: true, west: true, up: true, down: true }),
        (100, 0) => Some(Block::RedMushroomBlock { north: false, east: false, south: false, west: false, up: false, down: false }),
        (100, 1) => Some(Block::RedMushroomBlock { north: true, east: false, south: false, west: true, up: true, down: false }),
        (100, 2) => Some(Block::RedMushroomBlock { north: true, east: false, south: false, west: false, up: true, down: false }),
        (100, 3) => Some(Block::RedMushroomBlock { north: true, east: true, south: false, west: false, up: true, down: false }),
        (100, 4) => Some(Block::RedMushroomBlock { north: false, east: false, south: false, west: true, up: true, down: false }),
        (100, 5) => Some(Block::RedMushroomBlock { north: false, east: false, south: false, west: false, up: true, down: false }),
        (100, 6) => Some(Block::RedMushroomBlock { north: false, east: true, south: false, west: false, up: true, down: false }),
        (100, 7) => Some(Block::RedMushroomBlock { north: false, east: false, south: true, west: true, up: true, down: false }),
        (100, 8) => Some(Block::RedMushroomBlock { north: false, east: false, south: true, west: false, up: true, down: false }),
        (100, 9) => Some(Block::RedMushroomBlock { north: false, east: true, south: true, west: false, up: true, down: false }),
        (100, 10) => Some(Block::MushroomStem { north: true, east: true, south: true, west: true, up: false, down: false }),
        (100, 14) => Some(Block::RedMushroomBlock { north: true, east: true, south: true, west: true, up: true, down: true }),
        (100, 15) => Some(Block::MushroomStem { north: true, east: true, south: true, west: true, up: true, down: true }),
        (101, 0) => Some(Block::IronBars { east: false, south: false, north: false, west: false, waterlogged: false }),
        (102, 0) => Some(Block::GlassPane { east: false, south: false, north: false, west: false, waterlogged: false }),
        (103, 0) => Some(Block::Melon {}),
        (104, 0..=7) => Some(Block::PumpkinStem { age: state }),
        (105, 0..=7) => Some(Block::MelonStem { age: state }),
        (106, 0) => Some(Block::Vine { east: false, south: false, north: false, west: false, up: false }),
        (106, 1) => Some(Block::Vine { east: false, south: true, north: false, west: false, up: false }),
        (106, 2) => Some(Block::Vine { east: false, south: false, north: false, west: true, up: false }),
        (106, 3) => Some(Block::Vine { east: false, south: true, north: false, west: true, up: false }),
        (106, 4) => Some(Block::Vine { east: false, south: false, north: true, west: false, up: false }),
        (106, 5) => Some(Block::Vine { east: false, south: true, north: true, west: false, up: false }),
        (106, 6) => Some(Block::Vine { east: false, south: false, north: true, west: true, up: false }),
        (106, 7) => Some(Block::Vine { east: false, south: true, north: true, west: true, up: false }),
        (106, 8) => Some(Block::Vine { east: true, south: false, north: false, west: false, up: false }),
        (106, 9) => Some(Block::Vine { east: true, south: true, north: false, west: false, up: false }),
        (106, 10) => Some(Block::Vine { east: true, south: false, north: false, west: true, up: false }),
        (106, 11) => Some(Block::Vine { east: true, south: true, north: false, west: true, up: false }),
        (106, 12) => Some(Block::Vine { east: true, south: false, north: true, west: false, up: false }),
        (106, 13) => Some(Block::Vine { east: true, south: true, north: true, west: false, up: false }),
        (106, 14) => Some(Block::Vine { east: true, south: false, north: true, west: true, up: false }),
        (106, 15) => Some(Block::Vine { east: true, south: true, north: true, west: true, up: false }),
        (107, 0) => Some(Block::OakFenceGate { in_wall: false, powered: false, facing: Direction::South, open: false }),
        (107, 1) => Some(Block::OakFenceGate { in_wall: false, powered: false, facing: Direction::West, open: false }),
        (107, 2) => Some(Block::OakFenceGate { in_wall: false, powered: false, facing: Direction::North, open: false }),
        (107, 3) => Some(Block::OakFenceGate { in_wall: false, powered: false, facing: Direction::East, open: false }),
        (107, 4) => Some(Block::OakFenceGate { in_wall: false, powered: false, facing: Direction::South, open: true }),
        (107, 5) => Some(Block::OakFenceGate { in_wall: false, powered: false, facing: Direction::West, open: true }),
        (107, 6) => Some(Block::OakFenceGate { in_wall: false, powered: false, facing: Direction::North, open: true }),
        (107, 7) => Some(Block::OakFenceGate { in_wall: false, powered: false, facing: Direction::East, open: true }),
        (107, 8) => Some(Block::OakFenceGate { in_wall: false, powered: true, facing: Direction::South, open: false }),
        (107, 9) => Some(Block::OakFenceGate { in_wall: false, powered: true, facing: Direction::West, open: false }),
        (107, 10) => Some(Block::OakFenceGate { in_wall: false, powered: true, facing: Direction::North, open: false }),
        (107, 11) => Some(Block::OakFenceGate { in_wall: false, powered: true, facing: Direction::East, open: false }),
        (107, 12) => Some(Block::OakFenceGate { in_wall: false, powered: true, facing: Direction::South, open: true }),
        (107, 13) => Some(Block::OakFenceGate { in_wall: false, powered: true, facing: Direction::West, open: true }),
        (107, 14) => Some(Block::OakFenceGate { in_wall: false, powered: true, facing: Direction::North, open: true }),
        (107, 15) => Some(Block::OakFenceGate { in_wall: false, powered: true, facing: Direction::East, open: true }),
        (108, 0) => Some(Block::BrickStairs { half: BlockHalf::Bottom, shape: StairShape::Straight, facing: Direction::East, waterlogged: false }),
        (108, 1) => Some(Block::BrickStairs { half: BlockHalf::Bottom, shape: StairShape::Straight, facing: Direction::West, waterlogged: false }),
        (108, 2) => Some(Block::BrickStairs { half: BlockHalf::Bottom, shape: StairShape::Straight, facing: Direction::South, waterlogged: false }),
        (108, 3) => Some(Block::BrickStairs { half: BlockHalf::Bottom, shape: StairShape::Straight, facing: Direction::North, waterlogged: false }),
        (108, 4) => Some(Block::BrickStairs { half: BlockHalf::Top, shape: StairShape::Straight, facing: Direction::East, waterlogged: false }),
        (108, 5) => Some(Block::BrickStairs { half: BlockHalf::Top, shape: StairShape::Straight, facing: Direction::West, waterlogged: false }),
        (108, 6) => Some(Block::BrickStairs { half: BlockHalf::Top, shape: StairShape::Straight, facing: Direction::South, waterlogged: false }),
        (108, 7) => Some(Block::BrickStairs { half: BlockHalf::Top, shape: StairShape::Straight, facing: Direction::North, waterlogged: false }),
        (109, 0) => Some(Block::StoneBrickStairs { half: BlockHalf::Bottom, shape: StairShape::Straight, facing: Direction::East, waterlogged: false }),
        (109, 1) => Some(Block::StoneBrickStairs { half: BlockHalf::Bottom, shape: StairShape::Straight, facing: Direction::West, waterlogged: false }),
        (109, 2) => Some(Block::StoneBrickStairs { half: BlockHalf::Bottom, shape: StairShape::Straight, facing: Direction::South, waterlogged: false }),
        (109, 3) => Some(Block::StoneBrickStairs { half: BlockHalf::Bottom, shape: StairShape::Straight, facing: Direction::North, waterlogged: false }),
        (109, 4) => Some(Block::StoneBrickStairs { half: BlockHalf::Top, shape: StairShape::Straight, facing: Direction::East, waterlogged: false }),
        (109, 5) => Some(Block::StoneBrickStairs { half: BlockHalf::Top, shape: StairShape::Straight, facing: Direction::West, waterlogged: false }),
        (109, 6) => Some(Block::StoneBrickStairs { half: BlockHalf::Top, shape: StairShape::Straight, facing: Direction::South, waterlogged: false }),
        (109, 7) => Some(Block::StoneBrickStairs { half: BlockHalf::Top, shape: StairShape::Straight, facing: Direction::North, waterlogged: false }),
        (110, 0) => Some(Block::Mycelium { snowy: false }),
        (111, 0) => Some(Block::LilyPad {}),
        (112, 0) => Some(Block::NetherBricks {}),
        (113, 0) => Some(Block::NetherBrickFence { east: false, south: false, north: false, west: false, waterlogged: false }),
        (114, 0) => Some(Block::NetherBrickStairs { half: BlockHalf::Bottom, shape: StairShape::Straight, facing: Direction::East, waterlogged: false }),
        (114, 1) => Some(Block::NetherBrickStairs { half: BlockHalf::Bottom, shape: StairShape::Straight, facing: Direction::West, waterlogged: false }),
        (114, 2) => Some(Block::NetherBrickStairs { half: BlockHalf::Bottom, shape: StairShape::Straight, facing: Direction::South, waterlogged: false }),
        (114, 3) => Some(Block::NetherBrickStairs { half: BlockHalf::Bottom, shape: StairShape::Straight, facing: Direction::North, waterlogged: false }),
        (114, 4) => Some(Block::NetherBrickStairs { half: BlockHalf::Top, shape: StairShape::Straight, facing: Direction::East, waterlogged: false }),
        (114, 5) => Some(Block::NetherBrickStairs { half: BlockHalf::Top, shape: StairShape::Straight, facing: Direction::West, waterlogged: false }),
        (114, 6) => Some(Block::NetherBrickStairs { half: BlockHalf::Top, shape: StairShape::Straight, facing: Direction::South, waterlogged: false }),
        (114, 7) => Some(Block::NetherBrickStairs { half: BlockHalf::Top, shape: StairShape::Straight, facing: Direction::North, waterlogged: false }),
        (115, 0..=3) => Some(Block::NetherWart { age: state }),
        (116, 0) => Some(Block::EnchantingTable {}),
        (117, 0) => Some(Block::BrewingStand { has_bottle_0: false, has_bottle_1: false, has_bottle_2: false }),
        (117, 1) => Some(Block::BrewingStand { has_bottle_0: true, has_bottle_1: false, has_bottle_2: false }),
        (117, 2) => Some(Block::BrewingStand { has_bottle_0: false, has_bottle_1: true, has_bottle_2: false }),
        (117, 3) => Some(Block::BrewingStand { has_bottle_0: true, has_bottle_1: true, has_bottle_2: false }),
        (117, 4) => Some(Block::BrewingStand { has_bottle_0: false, has_bottle_1: false, has_bottle_2: true }),
        (117, 5) => Some(Block::BrewingStand { has_bottle_0: true, has_bottle_1: false, has_bottle_2: true }),
        (117, 6) => Some(Block::BrewingStand { has_bottle_0: false, has_bottle_1: true, has_bottle_2: true }),
        (117, 7) => Some(Block::BrewingStand { has_bottle_0: true, has_bottle_1: true, has_bottle_2: true }),
        (118, 0) => Some(Block::Cauldron {}),
        (118, 1..=3) => Some(Block::WaterCauldron { level: state }),
        (119, 0) => Some(Block::EndPortal {}),
        (120, 0) => Some(Block::EndPortalFrame { eye: false, facing: Direction::South }),
        (120, 1) => Some(Block::EndPortalFrame { eye: false, facing: Direction::West }),
        (120, 2) => Some(Block::EndPortalFrame { eye: false, facing: Direction::North }),
        (120, 3) => Some(Block::EndPortalFrame { eye: false, facing: Direction::East }),
        (120, 4) => Some(Block::EndPortalFrame { eye: true, facing: Direction::South }),
        (120, 5) => Some(Block::EndPortalFrame { eye: true, facing: Direction::West }),
        (120, 6) => Some(Block::EndPortalFrame { eye: true, facing: Direction::North }),
        (120, 7) => Some(Block::EndPortalFrame { eye: true, facing: Direction::East }),
        (121, 0) => Some(Block::EndStone {}),
        (122, 0) => Some(Block::DragonEgg {}),
        (123, 0) => Some(Block::RedstoneLamp { lit: false }),
        (124, 0) => Some(Block::RedstoneLamp { lit: true }),
        (125, 0) => Some(Block::OakSlab { type_: BlockHalf::Double, waterlogged: false }),
        (125, 1) => Some(Block::SpruceSlab { type_: BlockHalf::Double, waterlogged: false }),
        (125, 2) => Some(Block::BirchSlab { type_: BlockHalf::Double, waterlogged: false }),
        (125, 3) => Some(Block::JungleSlab { type_: BlockHalf::Double, waterlogged: false }),
        (125, 4) => Some(Block::AcaciaSlab { type_: BlockHalf::Double, waterlogged: false }),
        (125, 5) => Some(Block::DarkOakSlab { type_: BlockHalf::Double, waterlogged: false }),
        (126, 0) => Some(Block::OakSlab { type_: BlockHalf::Bottom, waterlogged: false }),
        (126, 1) => Some(Block::SpruceSlab { type_: BlockHalf::Bottom, waterlogged: false }),
        (126, 2) => Some(Block::BirchSlab { type_: BlockHalf::Bottom, waterlogged: false }),
        (126, 3) => Some(Block::JungleSlab { type_: BlockHalf::Bottom, waterlogged: false }),
        (126, 4) => Some(Block::AcaciaSlab { type_: BlockHalf::Bottom, waterlogged: false }),
        (126, 5) => Some(Block::DarkOakSlab { type_: BlockHalf::Bottom, waterlogged: false }),
        (126, 8) => Some(Block::OakSlab { type_: BlockHalf::Top, waterlogged: false }),
        (126, 9) => Some(Block::SpruceSlab { type_: BlockHalf::Top, waterlogged: false }),
        (126, 10) => Some(Block::BirchSlab { type_: BlockHalf::Top, waterlogged: false }),
        (126, 11) => Some(Block::JungleSlab { type_: BlockHalf::Top, waterlogged: false }),
        (126, 12) => Some(Block::AcaciaSlab { type_: BlockHalf::Top, waterlogged: false }),
        (126, 13) => Some(Block::DarkOakSlab { type_: BlockHalf::Top, waterlogged: false }),
        (127, 0) => Some(Block::Cocoa { facing: Direction::South, age: 0 }),
        (127, 1) => Some(Block::Cocoa { facing: Direction::West, age: 0 }),
        (127, 2) => Some(Block::Cocoa { facing: Direction::North, age: 0 }),
        (127, 3) => Some(Block::Cocoa { facing: Direction::East, age: 0 }),
        (127, 4) => Some(Block::Cocoa { facing: Direction::South, age: 1 }),
        (127, 5) => Some(Block::Cocoa { facing: Direction::West, age: 1 }),
        (127, 6) => Some(Block::Cocoa { facing: Direction::North, age: 1 }),
        (127, 7) => Some(Block::Cocoa { facing: Direction::East, age: 1 }),
        (127, 8) => Some(Block::Cocoa { facing: Direction::South, age: 2 }),
        (127, 9) => Some(Block::Cocoa { facing: Direction::West, age: 2 }),
        (127, 10) => Some(Block::Cocoa { facing: Direction::North, age: 2 }),
        (127, 11) => Some(Block::Cocoa { facing: Direction::East, age: 2 }),
        (128, 0) => Some(Block::SandstoneStairs { half: BlockHalf::Bottom, shape: StairShape::Straight, facing: Direction::East, waterlogged: false }),
        (128, 1) => Some(Block::SandstoneStairs { half: BlockHalf::Bottom, shape: StairShape::Straight, facing: Direction::West, waterlogged: false }),
        (128, 2) => Some(Block::SandstoneStairs { half: BlockHalf::Bottom, shape: StairShape::Straight, facing: Direction::South, waterlogged: false }),
        (128, 3) => Some(Block::SandstoneStairs { half: BlockHalf::Bottom, shape: StairShape::Straight, facing: Direction::North, waterlogged: false }),
        (128, 4) => Some(Block::SandstoneStairs { half: BlockHalf::Top, shape: StairShape::Straight, facing: Direction::East, waterlogged: false }),
        (128, 5) => Some(Block::SandstoneStairs { half: BlockHalf::Top, shape: StairShape::Straight, facing: Direction::West, waterlogged: false }),
        (128, 6) => Some(Block::SandstoneStairs { half: BlockHalf::Top, shape: StairShape::Straight, facing: Direction::South, waterlogged: false }),
        (128, 7) => Some(Block::SandstoneStairs { half: BlockHalf::Top, shape: StairShape::Straight, facing: Direction::North, waterlogged: false }),
        (129, 0) => Some(Block::EmeraldOre {}),
        (130, 2) => Some(Block::EnderChest { facing: Direction::North, waterlogged: false }),
        (130, 3) => Some(Block::EnderChest { facing: Direction::South, waterlogged: false }),
        (130, 4) => Some(Block::EnderChest { facing: Direction::West, waterlogged: false }),
        (130, 5) => Some(Block::EnderChest { facing: Direction::East, waterlogged: false }),
        (131, 0) => Some(Block::TripwireHook { powered: false, attached: false, facing: Direction::South }),
        (131, 1) => Some(Block::TripwireHook { powered: false, attached: false, facing: Direction::West }),
        (131, 2) => Some(Block::TripwireHook { powered: false, attached: false, facing: Direction::North }),
        (131, 3) => Some(Block::TripwireHook { powered: false, attached: false, facing: Direction::East }),
        (131, 4) => Some(Block::TripwireHook { powered: false, attached: true, facing: Direction::South }),
        (131, 5) => Some(Block::TripwireHook { powered: false, attached: true, facing: Direction::West }),
        (131, 6) => Some(Block::TripwireHook { powered: false, attached: true, facing: Direction::North }),
        (131, 7) => Some(Block::TripwireHook { powered: false, attached: true, facing: Direction::East }),
        (131, 8) => Some(Block::TripwireHook { powered: true, attached: false, facing: Direction::South }),
        (131, 9) => Some(Block::TripwireHook { powered: true, attached: false, facing: Direction::West }),
        (131, 10) => Some(Block::TripwireHook { powered: true, attached: false, facing: Direction::North }),
        (131, 11) => Some(Block::TripwireHook { powered: true, attached: false, facing: Direction::East }),
        (131, 12) => Some(Block::TripwireHook { powered: true, attached: true, facing: Direction::South }),
        (131, 13) => Some(Block::TripwireHook { powered: true, attached: true, facing: Direction::West }),
        (131, 14) => Some(Block::TripwireHook { powered: true, attached: true, facing: Direction::North }),
        (131, 15) => Some(Block::TripwireHook { powered: true, attached: true, facing: Direction::East }),
        (132, 0) => Some(Block::Tripwire { disarmed: false, east: false, powered: false, south: false, north: false, west: false, attached: false }),
        (132, 1) => Some(Block::Tripwire { disarmed: false, east: false, powered: true, south: false, north: false, west: false, attached: false }),
        (132, 4) => Some(Block::Tripwire { disarmed: false, east: false, powered: false, south: false, north: false, west: false, attached: true }),
        (132, 5) => Some(Block::Tripwire { disarmed: false, east: false, powered: true, south: false, north: false, west: false, attached: true }),
        (132, 8) => Some(Block::Tripwire { disarmed: true, east: false, powered: false, south: false, north: false, west: false, attached: false }),
        (132, 9) => Some(Block::Tripwire { disarmed: true, east: false, powered: true, south: false, north: false, west: false, attached: false }),
        (132, 12) => Some(Block::Tripwire { disarmed: true, east: false, powered: false, south: false, north: false, west: false, attached: true }),
        (132, 13) => Some(Block::Tripwire { disarmed: true, east: false, powered: true, south: false, north: false, west: false, attached: true }),
        (133, 0) => Some(Block::EmeraldBlock {}),
        (134, 0) => Some(Block::SpruceStairs { half: BlockHalf::Bottom, shape: StairShape::Straight, facing: Direction::East, waterlogged: false }),
        (134, 1) => Some(Block::SpruceStairs { half: BlockHalf::Bottom, shape: StairShape::Straight, facing: Direction::West, waterlogged: false }),
        (134, 2) => Some(Block::SpruceStairs { half: BlockHalf::Bottom, shape: StairShape::Straight, facing: Direction::South, waterlogged: false }),
        (134, 3) => Some(Block::SpruceStairs { half: BlockHalf::Bottom, shape: StairShape::Straight, facing: Direction::North, waterlogged: false }),
        (134, 4) => Some(Block::SpruceStairs { half: BlockHalf::Top, shape: StairShape::Straight, facing: Direction::East, waterlogged: false }),
        (134, 5) => Some(Block::SpruceStairs { half: BlockHalf::Top, shape: StairShape::Straight, facing: Direction::West, waterlogged: false }),
        (134, 6) => Some(Block::SpruceStairs { half: BlockHalf::Top, shape: StairShape::Straight, facing: Direction::South, waterlogged: false }),
        (134, 7) => Some(Block::SpruceStairs { half: BlockHalf::Top, shape: StairShape::Straight, facing: Direction::North, waterlogged: false }),
        (135, 0) => Some(Block::BirchStairs { half: BlockHalf::Bottom, shape: StairShape::Straight, facing: Direction::East, waterlogged: false }),
        (135, 1) => Some(Block::BirchStairs { half: BlockHalf::Bottom, shape: StairShape::Straight, facing: Direction::West, waterlogged: false }),
        (135, 2) => Some(Block::BirchStairs { half: BlockHalf::Bottom, shape: StairShape::Straight, facing: Direction::South, waterlogged: false }),
        (135, 3) => Some(Block::BirchStairs { half: BlockHalf::Bottom, shape: StairShape::Straight, facing: Direction::North, waterlogged: false }),
        (135, 4) => Some(Block::BirchStairs { half: BlockHalf::Top, shape: StairShape::Straight, facing: Direction::East, waterlogged: false }),
        (135, 5) => Some(Block::BirchStairs { half: BlockHalf::Top, shape: StairShape::Straight, facing: Direction::West, waterlogged: false }),
        (135, 6) => Some(Block::BirchStairs { half: BlockHalf::Top, shape: StairShape::Straight, facing: Direction::South, waterlogged: false }),
        (135, 7) => Some(Block::BirchStairs { half: BlockHalf::Top, shape: StairShape::Straight, facing: Direction::North, waterlogged: false }),
        (136, 0) => Some(Block::JungleStairs { half: BlockHalf::Bottom, shape: StairShape::Straight, facing: Direction::East, waterlogged: false }),
        (136, 1) => Some(Block::JungleStairs { half: BlockHalf::Bottom, shape: StairShape::Straight, facing: Direction::West, waterlogged: false }),
        (136, 2) => Some(Block::JungleStairs { half: BlockHalf::Bottom, shape: StairShape::Straight, facing: Direction::South, waterlogged: false }),
        (136, 3) => Some(Block::JungleStairs { half: BlockHalf::Bottom, shape: StairShape::Straight, facing: Direction::North, waterlogged: false }),
        (136, 4) => Some(Block::JungleStairs { half: BlockHalf::Top, shape: StairShape::Straight, facing: Direction::East, waterlogged: false }),
        (136, 5) => Some(Block::JungleStairs { half: BlockHalf::Top, shape: StairShape::Straight, facing: Direction::West, waterlogged: false }),
        (136, 6) => Some(Block::JungleStairs { half: BlockHalf::Top, shape: StairShape::Straight, facing: Direction::South, waterlogged: false }),
        (136, 7) => Some(Block::JungleStairs { half: BlockHalf::Top, shape: StairShape::Straight, facing: Direction::North, waterlogged: false }),
        (137, 0) => Some(Block::CommandBlock { conditional: false, facing: Direction::Down }),
        (137, 1) => Some(Block::CommandBlock { conditional: false, facing: Direction::Up }),
        (137, 2) => Some(Block::CommandBlock { conditional: false, facing: Direction::North }),
        (137, 3) => Some(Block::CommandBlock { conditional: false, facing: Direction::South }),
        (137, 4) => Some(Block::CommandBlock { conditional: false, facing: Direction::West }),
        (137, 5) => Some(Block::CommandBlock { conditional: false, facing: Direction::East }),
        (137, 8) => Some(Block::CommandBlock { conditional: true, facing: Direction::Down }),
        (137, 9) => Some(Block::CommandBlock { conditional: true, facing: Direction::Up }),
        (137, 10) => Some(Block::CommandBlock { conditional: true, facing: Direction::North }),
        (137, 11) => Some(Block::CommandBlock { conditional: true, facing: Direction::South }),
        (137, 12) => Some(Block::CommandBlock { conditional: true, facing: Direction::West }),
        (137, 13) => Some(Block::CommandBlock { conditional: true, facing: Direction::East }),
        (138, 0) => Some(Block::Beacon {}),
        (139, 0) => Some(Block::CobblestoneWall { east: WallSide::None, south: WallSide::None, north: WallSide::None, west: WallSide::None, up: false, waterlogged: false }),
        (139, 1) => Some(Block::MossyCobblestoneWall { east: WallSide::None, south: WallSide::None, north: WallSide::None, west: WallSide::None, up: false, waterlogged: false }),
        (140, 0) => Some(Block::FlowerPot {}),
        (140, 1) => Some(Block::PottedPoppy {}),
        (140, 2) => Some(Block::PottedDandelion {}),
        (140, 3) => Some(Block::PottedOakSapling {}),
        (140, 4) => Some(Block::PottedSpruceSapling {}),
        (140, 5) => Some(Block::PottedBirchSapling {}),
        (140, 6) => Some(Block::PottedJungleSapling {}),
        (140, 7) => Some(Block::PottedRedMushroom {}),
        (140, 8) => Some(Block::PottedBrownMushroom {}),
        (140, 9) => Some(Block::PottedCactus {}),
        (140, 10) => Some(Block::PottedDeadBush {}),
        (140, 11) => Some(Block::PottedFern {}),
        (140, 12) => Some(Block::PottedAcaciaSapling {}),
        (140, 13) => Some(Block::PottedDarkOakSapling {}),
        (140, 14) => Some(Block::PottedBlueOrchid {}),
        (140, 15) => Some(Block::PottedAllium {}),
        (141, 0..=7) => Some(Block::Carrots { age: state }),
        (142, 0..=7) => Some(Block::Potatoes { age: state }),
        (143, 0) => Some(Block::OakButton { powered: false, facing: Direction::East, face: AttachedFace::Ceiling }),
        (143, 1) => Some(Block::OakButton { powered: false, facing: Direction::East, face: AttachedFace::Wall }),
        (143, 2) => Some(Block::OakButton { powered: false, facing: Direction::West, face: AttachedFace::Wall }),
        (143, 3) => Some(Block::OakButton { powered: false, facing: Direction::South, face: AttachedFace::Wall }),
        (143, 4) => Some(Block::OakButton { powered: false, facing: Direction::North, face: AttachedFace::Wall }),
        (143, 5) => Some(Block::OakButton { powered: false, facing: Direction::East, face: AttachedFace::Floor }),
        (143, 8) => Some(Block::OakButton { powered: true, facing: Direction::South, face: AttachedFace::Ceiling }),
        (143, 9) => Some(Block::OakButton { powered: true, facing: Direction::East, face: AttachedFace::Wall }),
        (143, 10) => Some(Block::OakButton { powered: true, facing: Direction::West, face: AttachedFace::Wall }),
        (143, 11) => Some(Block::OakButton { powered: true, facing: Direction::South, face: AttachedFace::Wall }),
        (143, 12) => Some(Block::OakButton { powered: true, facing: Direction::North, face: AttachedFace::Wall }),
        (143, 13) => Some(Block::OakButton { powered: true, facing: Direction::South, face: AttachedFace::Floor }),
        (144, 0) => Some(Block::SkeletonSkull { rotation: 0 }),
        (144, 1) => Some(Block::SkeletonSkull { rotation: 4 }),
        (144, 2) => Some(Block::SkeletonWallSkull { facing: Direction::North }),
        (144, 3) => Some(Block::SkeletonWallSkull { facing: Direction::South }),
        (144, 4) => Some(Block::SkeletonWallSkull { facing: Direction::West }),
        (144, 5) => Some(Block::SkeletonWallSkull { facing: Direction::East }),
        (144, 8) => Some(Block::SkeletonSkull { rotation: 8 }),
        (144, 9) => Some(Block::SkeletonSkull { rotation: 12 }),
        (144, 10) => Some(Block::SkeletonWallSkull { facing: Direction::North }),
        (144, 11) => Some(Block::SkeletonWallSkull { facing: Direction::South }),
        (144, 12) => Some(Block::SkeletonWallSkull { facing: Direction::West }),
        (144, 13) => Some(Block::SkeletonWallSkull { facing: Direction::East }),
        (145, 0) => Some(Block::Anvil { facing: Direction::South }),
        (145, 1) => Some(Block::Anvil { facing: Direction::West }),
        (145, 2) => Some(Block::Anvil { facing: Direction::North }),
        (145, 3) => Some(Block::Anvil { facing: Direction::East }),
        (145, 4) => Some(Block::ChippedAnvil { facing: Direction::South }),
        (145, 5) => Some(Block::ChippedAnvil { facing: Direction::West }),
        (145, 6) => Some(Block::ChippedAnvil { facing: Direction::North }),
        (145, 7) => Some(Block::ChippedAnvil { facing: Direction::East }),
        (145, 8) => Some(Block::DamagedAnvil { facing: Direction::South }),
        (145, 9) => Some(Block::DamagedAnvil { facing: Direction::West }),
        (145, 10) => Some(Block::DamagedAnvil { facing: Direction::North }),
        (145, 11) => Some(Block::DamagedAnvil { facing: Direction::East }),
        (146, 2) => Some(Block::TrappedChest { facing: Direction::North, type_: ChestType::Single, waterlogged: false }),
        (146, 3) => Some(Block::TrappedChest { facing: Direction::South, type_: ChestType::Single, waterlogged: false }),
        (146, 4) => Some(Block::TrappedChest { facing: Direction::West, type_: ChestType::Single, waterlogged: false }),
        (146, 5) => Some(Block::TrappedChest { facing: Direction::East, type_: ChestType::Single, waterlogged: false }),
        (147, 0..=15) => Some(Block::LightWeightedPressurePlate { power: state }),
        (148, 0..=15) => Some(Block::HeavyWeightedPressurePlate { power: state }),
        (149, 0) => Some(Block::Comparator { mode: ComparatorMode::Compare, powered: false, facing: Direction::South }),
        (149, 1) => Some(Block::Comparator { mode: ComparatorMode::Compare, powered: false, facing: Direction::West }),
        (149, 2) => Some(Block::Comparator { mode: ComparatorMode::Compare, powered: false, facing: Direction::North }),
        (149, 3) => Some(Block::Comparator { mode: ComparatorMode::Compare, powered: false, facing: Direction::East }),
        (149, 4) => Some(Block::Comparator { mode: ComparatorMode::Subtract, powered: false, facing: Direction::South }),
        (149, 5) => Some(Block::Comparator { mode: ComparatorMode::Subtract, powered: false, facing: Direction::West }),
        (149, 6) => Some(Block::Comparator { mode: ComparatorMode::Subtract, powered: false, facing: Direction::North }),
        (149, 7) => Some(Block::Comparator { mode: ComparatorMode::Subtract, powered: false, facing: Direction::East }),
        (149, 8) => Some(Block::Comparator { mode: ComparatorMode::Compare, powered: false, facing: Direction::South }),
        (149, 9) => Some(Block::Comparator { mode: ComparatorMode::Compare, powered: false, facing: Direction::West }),
        (149, 10) => Some(Block::Comparator { mode: ComparatorMode::Compare, powered: false, facing: Direction::North }),
        (149, 11) => Some(Block::Comparator { mode: ComparatorMode::Compare, powered: false, facing: Direction::East }),
        (149, 12) => Some(Block::Comparator { mode: ComparatorMode::Subtract, powered: false, facing: Direction::South }),
        (149, 13) => Some(Block::Comparator { mode: ComparatorMode::Subtract, powered: false, facing: Direction::West }),
        (149, 14) => Some(Block::Comparator { mode: ComparatorMode::Subtract, powered: false, facing: Direction::North }),
        (149, 15) => Some(Block::Comparator { mode: ComparatorMode::Subtract, powered: false, facing: Direction::East }),
        (150, 0) => Some(Block::Comparator { mode: ComparatorMode::Compare, powered: true, facing: Direction::South }),
        (150, 1) => Some(Block::Comparator { mode: ComparatorMode::Compare, powered: true, facing: Direction::West }),
        (150, 2) => Some(Block::Comparator { mode: ComparatorMode::Compare, powered: true, facing: Direction::North }),
        (150, 3) => Some(Block::Comparator { mode: ComparatorMode::Compare, powered: true, facing: Direction::East }),
        (150, 4) => Some(Block::Comparator { mode: ComparatorMode::Subtract, powered: true, facing: Direction::South }),
        (150, 5) => Some(Block::Comparator { mode: ComparatorMode::Subtract, powered: true, facing: Direction::West }),
        (150, 6) => Some(Block::Comparator { mode: ComparatorMode::Subtract, powered: true, facing: Direction::North }),
        (150, 7) => Some(Block::Comparator { mode: ComparatorMode::Subtract, powered: true, facing: Direction::East }),
        (150, 8) => Some(Block::Comparator { mode: ComparatorMode::Compare, powered: true, facing: Direction::South }),
        (150, 9) => Some(Block::Comparator { mode: ComparatorMode::Compare, powered: true, facing: Direction::West }),
        (150, 10) => Some(Block::Comparator { mode: ComparatorMode::Compare, powered: true, facing: Direction::North }),
        (150, 11) => Some(Block::Comparator { mode: ComparatorMode::Compare, powered: true, facing: Direction::East }),
        (150, 12) => Some(Block::Comparator { mode: ComparatorMode::Subtract, powered: true, facing: Direction::South }),
        (150, 13) => Some(Block::Comparator { mode: ComparatorMode::Subtract, powered: true, facing: Direction::West }),
        (150, 14) => Some(Block::Comparator { mode: ComparatorMode::Subtract, powered: true, facing: Direction::North }),
        (150, 15) => Some(Block::Comparator { mode: ComparatorMode::Subtract, powered: true, facing: Direction::East }),
        (151, 0..=15) => Some(Block::DaylightDetector { inverted: false, power: state }),
        (152, 0) => Some(Block::RedstoneBlock {}),
        (153, 0) => Some(Block::NetherQuartzOre {}),
        (154, 0) => Some(Block::Hopper { facing: Direction::Down, enabled: true }),
        (154, 2) => Some(Block::Hopper { facing: Direction::North, enabled: true }),
        (154, 3) => Some(Block::Hopper { facing: Direction::South, enabled: true }),
        (154, 4) => Some(Block::Hopper { facing: Direction::West, enabled: true }),
        (154, 5) => Some(Block::Hopper { facing: Direction::East, enabled: true }),
        (154, 8) => Some(Block::Hopper { facing: Direction::Down, enabled: false }),
        (154, 10) => Some(Block::Hopper { facing: Direction::North, enabled: false }),
        (154, 11) => Some(Block::Hopper { facing: Direction::South, enabled: false }),
        (154, 12) => Some(Block::Hopper { facing: Direction::West, enabled: false }),
        (154, 13) => Some(Block::Hopper { facing: Direction::East, enabled: false }),
        (155, 0) => Some(Block::QuartzBlock {}),
        (155, 1) => Some(Block::ChiseledQuartzBlock {}),
        (155, 2) => Some(Block::QuartzPillar { axis: Axis::Y }),
        (155, 3) => Some(Block::QuartzPillar { axis: Axis::X }),
        (155, 4) => Some(Block::QuartzPillar { axis: Axis::Z }),
        (155, 6) => Some(Block::QuartzPillar { axis: Axis::X }),
        (155, 10) => Some(Block::QuartzPillar { axis: Axis::Z }),
        (156, 0) => Some(Block::QuartzStairs { half: BlockHalf::Bottom, shape: StairShape::Straight, facing: Direction::East, waterlogged: false }),
        (156, 1) => Some(Block::QuartzStairs { half: BlockHalf::Bottom, shape: StairShape::Straight, facing: Direction::West, waterlogged: false }),
        (156, 2) => Some(Block::QuartzStairs { half: BlockHalf::Bottom, shape: StairShape::Straight, facing: Direction::South, waterlogged: false }),
        (156, 3) => Some(Block::QuartzStairs { half: BlockHalf::Bottom, shape: StairShape::Straight, facing: Direction::North, waterlogged: false }),
        (156, 4) => Some(Block::QuartzStairs { half: BlockHalf::Top, shape: StairShape::Straight, facing: Direction::East, waterlogged: false }),
        (156, 5) => Some(Block::QuartzStairs { half: BlockHalf::Top, shape: StairShape::Straight, facing: Direction::West, waterlogged: false }),
        (156, 6) => Some(Block::QuartzStairs { half: BlockHalf::Top, shape: StairShape::Straight, facing: Direction::South, waterlogged: false }),
        (156, 7) => Some(Block::QuartzStairs { half: BlockHalf::Top, shape: StairShape::Straight, facing: Direction::North, waterlogged: false }),
        (157, 0) => Some(Block::ActivatorRail { shape: RailShape::NorthSouth, powered: false, waterlogged: false }),
        (157, 1) => Some(Block::ActivatorRail { shape: RailShape::EastWest, powered: false, waterlogged: false }),
        (157, 2) => Some(Block::ActivatorRail { shape: RailShape::AscendingEast, powered: false, waterlogged: false }),
        (157, 3) => Some(Block::ActivatorRail { shape: RailShape::AscendingWest, powered: false, waterlogged: false }),
        (157, 4) => Some(Block::ActivatorRail { shape: RailShape::AscendingNorth, powered: false, waterlogged: false }),
        (157, 5) => Some(Block::ActivatorRail { shape: RailShape::AscendingSouth, powered: false, waterlogged: false }),
        (157, 8) => Some(Block::ActivatorRail { shape: RailShape::NorthSouth, powered: true, waterlogged: false }),
        (157, 9) => Some(Block::ActivatorRail { shape: RailShape::EastWest, powered: true, waterlogged: false }),
        (157, 10) => Some(Block::ActivatorRail { shape: RailShape::AscendingEast, powered: true, waterlogged: false }),
        (157, 11) => Some(Block::ActivatorRail { shape: RailShape::AscendingWest, powered: true, waterlogged: false }),
        (157, 12) => Some(Block::ActivatorRail { shape: RailShape::AscendingNorth, powered: true, waterlogged: false }),
        (157, 13) => Some(Block::ActivatorRail { shape: RailShape::AscendingSouth, powered: true, waterlogged: false }),
        (158, 0) => Some(Block::Dropper { triggered: false, facing: Direction::Down }),
        (158, 1) => Some(Block::Dropper { triggered: false, facing: Direction::Up }),
        (158, 2) => Some(Block::Dropper { triggered: false, facing: Direction::North }),
        (158, 3) => Some(Block::Dropper { triggered: false, facing: Direction::South }),
        (158, 4) => Some(Block::Dropper { triggered: false, facing: Direction::West }),
        (158, 5) => Some(Block::Dropper { triggered: false, facing: Direction::East }),
        (158, 8) => Some(Block::Dropper { triggered: true, facing: Direction::Down }),
        (158, 9) => Some(Block::Dropper { triggered: true, facing: Direction::Up }),
        (158, 10) => Some(Block::Dropper { triggered: true, facing: Direction::North }),
        (158, 11) => Some(Block::Dropper { triggered: true, facing: Direction::South }),
        (158, 12) => Some(Block::Dropper { triggered: true, facing: Direction::West }),
        (158, 13) => Some(Block::Dropper { triggered: true, facing: Direction::East }),
        (159, 0) => Some(Block::WhiteTerracotta {}),
        (159, 1) => Some(Block::OrangeTerracotta {}),
        (159, 2) => Some(Block::MagentaTerracotta {}),
        (159, 3) => Some(Block::LightBlueTerracotta {}),
        (159, 4) => Some(Block::YellowTerracotta {}),
        (159, 5) => Some(Block::LimeTerracotta {}),
        (159, 6) => Some(Block::PinkTerracotta {}),
        (159, 7) => Some(Block::GrayTerracotta {}),
        (159, 8) => Some(Block::LightGrayTerracotta {}),
        (159, 9) => Some(Block::CyanTerracotta {}),
        (159, 10) => Some(Block::PurpleTerracotta {}),
        (159, 11) => Some(Block::BlueTerracotta {}),
        (159, 12) => Some(Block::BrownTerracotta {}),
        (159, 13) => Some(Block::GreenTerracotta {}),
        (159, 14) => Some(Block::RedTerracotta {}),
        (159, 15) => Some(Block::BlackTerracotta {}),
        (160, 0) => Some(Block::WhiteStainedGlassPane { east: false, south: false, north: false, west: false, waterlogged: false }),
        (160, 1) => Some(Block::OrangeStainedGlassPane { east: false, south: false, north: false, west: false, waterlogged: false }),
        (160, 2) => Some(Block::MagentaStainedGlassPane { east: false, south: false, north: false, west: false, waterlogged: false }),
        (160, 3) => Some(Block::LightBlueStainedGlassPane { east: false, south: false, north: false, west: false, waterlogged: false }),
        (160, 4) => Some(Block::YellowStainedGlassPane { east: false, south: false, north: false, west: false, waterlogged: false }),
        (160, 5) => Some(Block::LimeStainedGlassPane { east: false, south: false, north: false, west: false, waterlogged: false }),
        (160, 6) => Some(Block::PinkStainedGlassPane { east: false, south: false, north: false, west: false, waterlogged: false }),
        (160, 7) => Some(Block::GrayStainedGlassPane { east: false, south: false, north: false, west: false, waterlogged: false }),
        (160, 8) => Some(Block::LightGrayStainedGlassPane { east: false, south: false, north: false, west: false, waterlogged: false }),
        (160, 9) => Some(Block::CyanStainedGlassPane { east: false, south: false, north: false, west: false, waterlogged: false }),
        (160, 10) => Some(Block::PurpleStainedGlassPane { east: false, south: false, north: false, west: false, waterlogged: false }),
        (160, 11) => Some(Block::BlueStainedGlassPane { east: false, south: false, north: false, west: false, waterlogged: false }),
        (160, 12) => Some(Block::BrownStainedGlassPane { east: false, south: false, north: false, west: false, waterlogged: false }),
        (160, 13) => Some(Block::GreenStainedGlassPane { east: false, south: false, north: false, west: false, waterlogged: false }),
        (160, 14) => Some(Block::RedStainedGlassPane { east: false, south: false, north: false, west: false, waterlogged: false }),
        (160, 15) => Some(Block::BlackStainedGlassPane { east: false, south: false, north: false, west: false, waterlogged: false }),
        (161, 0) => Some(Block::AcaciaLeaves { persistent: false, distance: 1, waterlogged: false }),
        (161, 1) => Some(Block::DarkOakLeaves { persistent: false, distance: 1, waterlogged: false }),
        (161, 4) => Some(Block::AcaciaLeaves { persistent: true, distance: 1, waterlogged: false }),
        (161, 5) => Some(Block::DarkOakLeaves { persistent: true, distance: 1, waterlogged: false }),
        (161, 8) => Some(Block::AcaciaLeaves { persistent: false, distance: 1, waterlogged: false }),
        (161, 9) => Some(Block::DarkOakLeaves { persistent: false, distance: 1, waterlogged: false }),
        (161, 12) => Some(Block::AcaciaLeaves { persistent: true, distance: 1, waterlogged: false }),
        (161, 13) => Some(Block::DarkOakLeaves { persistent: true, distance: 1, waterlogged: false }),
        (162, 0) => Some(Block::AcaciaLog { axis: Axis::Y }),
        (162, 1) => Some(Block::DarkOakLog { axis: Axis::Y }),
        (162, 4) => Some(Block::AcaciaLog { axis: Axis::X }),
        (162, 5) => Some(Block::DarkOakLog { axis: Axis::X }),
        (162, 8) => Some(Block::AcaciaLog { axis: Axis::Z }),
        (162, 9) => Some(Block::DarkOakLog { axis: Axis::Z }),
        (162, 12) => Some(Block::AcaciaWood { axis: Axis::Y }),
        (162, 13) => Some(Block::DarkOakWood { axis: Axis::Y }),
        (163, 0) => Some(Block::AcaciaStairs { half: BlockHalf::Bottom, shape: StairShape::Straight, facing: Direction::East, waterlogged: false }),
        (163, 1) => Some(Block::AcaciaStairs { half: BlockHalf::Bottom, shape: StairShape::Straight, facing: Direction::West, waterlogged: false }),
        (163, 2) => Some(Block::AcaciaStairs { half: BlockHalf::Bottom, shape: StairShape::Straight, facing: Direction::South, waterlogged: false }),
        (163, 3) => Some(Block::AcaciaStairs { half: BlockHalf::Bottom, shape: StairShape::Straight, facing: Direction::North, waterlogged: false }),
        (163, 4) => Some(Block::AcaciaStairs { half: BlockHalf::Top, shape: StairShape::Straight, facing: Direction::East, waterlogged: false }),
        (163, 5) => Some(Block::AcaciaStairs { half: BlockHalf::Top, shape: StairShape::Straight, facing: Direction::West, waterlogged: false }),
        (163, 6) => Some(Block::AcaciaStairs { half: BlockHalf::Top, shape: StairShape::Straight, facing: Direction::South, waterlogged: false }),
        (163, 7) => Some(Block::AcaciaStairs { half: BlockHalf::Top, shape: StairShape::Straight, facing: Direction::North, waterlogged: false }),
        (164, 0) => Some(Block::DarkOakStairs { half: BlockHalf::Bottom, shape: StairShape::Straight, facing: Direction::East, waterlogged: false }),
        (164, 1) => Some(Block::DarkOakStairs { half: BlockHalf::Bottom, shape: StairShape::Straight, facing: Direction::West, waterlogged: false }),
        (164, 2) => Some(Block::DarkOakStairs { half: BlockHalf::Bottom, shape: StairShape::Straight, facing: Direction::South, waterlogged: false }),
        (164, 3) => Some(Block::DarkOakStairs { half: BlockHalf::Bottom, shape: StairShape::Straight, facing: Direction::North, waterlogged: false }),
        (164, 4) => Some(Block::DarkOakStairs { half: BlockHalf::Top, shape: StairShape::Straight, facing: Direction::East, waterlogged: false }),
        (164, 5) => Some(Block::DarkOakStairs { half: BlockHalf::Top, shape: StairShape::Straight, facing: Direction::West, waterlogged: false }),
        (164, 6) => Some(Block::DarkOakStairs { half: BlockHalf::Top, shape: StairShape::Straight, facing: Direction::South, waterlogged: false }),
        (164, 7) => Some(Block::DarkOakStairs { half: BlockHalf::Top, shape: StairShape::Straight, facing: Direction::North, waterlogged: false }),
        (165, 0) => Some(Block::SlimeBlock {}),
        (166, 0) => Some(Block::Barrier {}),
        (167, 0) => Some(Block::IronTrapdoor { half: BlockHalf::Bottom, facing: Direction::North, open: false, powered: false, waterlogged: false }),
        (167, 1) => Some(Block::IronTrapdoor { half: BlockHalf::Bottom, facing: Direction::South, open: false, powered: false, waterlogged: false }),
        (167, 2) => Some(Block::IronTrapdoor { half: BlockHalf::Bottom, facing: Direction::West, open: false, powered: false, waterlogged: false }),
        (167, 3) => Some(Block::IronTrapdoor { half: BlockHalf::Bottom, facing: Direction::East, open: false, powered: false, waterlogged: false }),
        (167, 4) => Some(Block::IronTrapdoor { half: BlockHalf::Bottom, facing: Direction::North, open: true, powered: false, waterlogged: false }),
        (167, 5) => Some(Block::IronTrapdoor { half: BlockHalf::Bottom, facing: Direction::South, open: true, powered: false, waterlogged: false }),
        (167, 6) => Some(Block::IronTrapdoor { half: BlockHalf::Bottom, facing: Direction::West, open: true, powered: false, waterlogged: false }),
        (167, 7) => Some(Block::IronTrapdoor { half: BlockHalf::Bottom, facing: Direction::East, open: true, powered: false, waterlogged: false }),
        (167, 8) => Some(Block::IronTrapdoor { half: BlockHalf::Top, facing: Direction::North, open: false, powered: false, waterlogged: false }),
        (167, 9) => Some(Block::IronTrapdoor { half: BlockHalf::Top, facing: Direction::South, open: false, powered: false, waterlogged: false }),
        (167, 10) => Some(Block::IronTrapdoor { half: BlockHalf::Top, facing: Direction::West, open: false, powered: false, waterlogged: false }),
        (167, 11) => Some(Block::IronTrapdoor { half: BlockHalf::Top, facing: Direction::East, open: false, powered: false, waterlogged: false }),
        (167, 12) => Some(Block::IronTrapdoor { half: BlockHalf::Top, facing: Direction::North, open: true, powered: false, waterlogged: false }),
        (167, 13) => Some(Block::IronTrapdoor { half: BlockHalf::Top, facing: Direction::South, open: true, powered: false, waterlogged: false }),
        (167, 14) => Some(Block::IronTrapdoor { half: BlockHalf::Top, facing: Direction::West, open: true, powered: false, waterlogged: false }),
        (167, 15) => Some(Block::IronTrapdoor { half: BlockHalf::Top, facing: Direction::East, open: true, powered: false, waterlogged: false }),
        (168, 0) => Some(Block::Prismarine {}),
        (168, 1) => Some(Block::PrismarineBricks {}),
        (168, 2) => Some(Block::DarkPrismarine {}),
        (169, 0) => Some(Block::SeaLantern {}),
        (170, 0) => Some(Block::HayBlock { axis: Axis::Y }),
        (170, 4) => Some(Block::HayBlock { axis: Axis::X }),
        (170, 8) => Some(Block::HayBlock { axis: Axis::Z }),
        (171, 0) => Some(Block::WhiteCarpet {}),
        (171, 1) => Some(Block::OrangeCarpet {}),
        (171, 2) => Some(Block::MagentaCarpet {}),
        (171, 3) => Some(Block::LightBlueCarpet {}),
        (171, 4) => Some(Block::YellowCarpet {}),
        (171, 5) => Some(Block::LimeCarpet {}),
        (171, 6) => Some(Block::PinkCarpet {}),
        (171, 7) => Some(Block::GrayCarpet {}),
        (171, 8) => Some(Block::LightGrayCarpet {}),
        (171, 9) => Some(Block::CyanCarpet {}),
        (171, 10) => Some(Block::PurpleCarpet {}),
        (171, 11) => Some(Block::BlueCarpet {}),
        (171, 12) => Some(Block::BrownCarpet {}),
        (171, 13) => Some(Block::GreenCarpet {}),
        (171, 14) => Some(Block::RedCarpet {}),
        (171, 15) => Some(Block::BlackCarpet {}),
        (172, 0) => Some(Block::Terracotta {}),
        (173, 0) => Some(Block::CoalBlock {}),
        (174, 0) => Some(Block::PackedIce {}),
        (175, 0) => Some(Block::Sunflower { half: BlockHalf::Lower }),
        (175, 1) => Some(Block::Lilac { half: BlockHalf::Lower }),
        (175, 2) => Some(Block::TallGrass { half: BlockHalf::Lower }),
        (175, 3) => Some(Block::LargeFern { half: BlockHalf::Lower }),
        (175, 4) => Some(Block::RoseBush { half: BlockHalf::Lower }),
        (175, 5) => Some(Block::Peony { half: BlockHalf::Lower }),
        (175, 8) => Some(Block::Sunflower { half: BlockHalf::Upper }),
        (175, 9) => Some(Block::Lilac { half: BlockHalf::Upper }),
        (175, 10) => Some(Block::TallGrass { half: BlockHalf::Upper }),
        (175, 11) => Some(Block::LargeFern { half: BlockHalf::Upper }),
        (175, 12) => Some(Block::RoseBush { half: BlockHalf::Upper }),
        (175, 13) => Some(Block::Peony { half: BlockHalf::Upper }),
        (176, 0..=15) => Some(Block::WhiteBanner { rotation: state }),
        (177, 2) => Some(Block::WhiteWallBanner { facing: Direction::North }),
        (177, 3) => Some(Block::WhiteWallBanner { facing: Direction::South }),
        (177, 4) => Some(Block::WhiteWallBanner { facing: Direction::West }),
        (177, 5) => Some(Block::WhiteWallBanner { facing: Direction::East }),
        (178, 0..=15) => Some(Block::DaylightDetector { inverted: true, power: state }),
        (179, 0) => Some(Block::RedSandstone {}),
        (179, 1) => Some(Block::ChiseledRedSandstone {}),
        (179, 2) => Some(Block::CutRedSandstone {}),
        (180, 0) => Some(Block::RedSandstoneStairs { half: BlockHalf::Bottom, shape: StairShape::Straight, facing: Direction::East, waterlogged: false }),
        (180, 1) => Some(Block::RedSandstoneStairs { half: BlockHalf::Bottom, shape: StairShape::Straight, facing: Direction::West, waterlogged: false }),
        (180, 2) => Some(Block::RedSandstoneStairs { half: BlockHalf::Bottom, shape: StairShape::Straight, facing: Direction::South, waterlogged: false }),
        (180, 3) => Some(Block::RedSandstoneStairs { half: BlockHalf::Bottom, shape: StairShape::Straight, facing: Direction::North, waterlogged: false }),
        (180, 4) => Some(Block::RedSandstoneStairs { half: BlockHalf::Top, shape: StairShape::Straight, facing: Direction::East, waterlogged: false }),
        (180, 5) => Some(Block::RedSandstoneStairs { half: BlockHalf::Top, shape: StairShape::Straight, facing: Direction::West, waterlogged: false }),
        (180, 6) => Some(Block::RedSandstoneStairs { half: BlockHalf::Top, shape: StairShape::Straight, facing: Direction::South, waterlogged: false }),
        (180, 7) => Some(Block::RedSandstoneStairs { half: BlockHalf::Top, shape: StairShape::Straight, facing: Direction::North, waterlogged: false }),
        (181, 0) => Some(Block::RedSandstoneSlab { type_: BlockHalf::Double, waterlogged: false }),
        (181, 8) => Some(Block::SmoothRedSandstone {}),
        (182, 0) => Some(Block::RedSandstoneSlab { type_: BlockHalf::Bottom, waterlogged: false }),
        (182, 8) => Some(Block::RedSandstoneSlab { type_: BlockHalf::Top, waterlogged: false }),
        (183, 0) => Some(Block::SpruceFenceGate { in_wall: false, powered: false, facing: Direction::South, open: false }),
        (183, 1) => Some(Block::SpruceFenceGate { in_wall: false, powered: false, facing: Direction::West, open: false }),
        (183, 2) => Some(Block::SpruceFenceGate { in_wall: false, powered: false, facing: Direction::North, open: false }),
        (183, 3) => Some(Block::SpruceFenceGate { in_wall: false, powered: false, facing: Direction::East, open: false }),
        (183, 4) => Some(Block::SpruceFenceGate { in_wall: false, powered: false, facing: Direction::South, open: true }),
        (183, 5) => Some(Block::SpruceFenceGate { in_wall: false, powered: false, facing: Direction::West, open: true }),
        (183, 6) => Some(Block::SpruceFenceGate { in_wall: false, powered: false, facing: Direction::North, open: true }),
        (183, 7) => Some(Block::SpruceFenceGate { in_wall: false, powered: false, facing: Direction::East, open: true }),
        (183, 8) => Some(Block::SpruceFenceGate { in_wall: false, powered: true, facing: Direction::South, open: false }),
        (183, 9) => Some(Block::SpruceFenceGate { in_wall: false, powered: true, facing: Direction::West, open: false }),
        (183, 10) => Some(Block::SpruceFenceGate { in_wall: false, powered: true, facing: Direction::North, open: false }),
        (183, 11) => Some(Block::SpruceFenceGate { in_wall: false, powered: true, facing: Direction::East, open: false }),
        (183, 12) => Some(Block::SpruceFenceGate { in_wall: false, powered: true, facing: Direction::South, open: true }),
        (183, 13) => Some(Block::SpruceFenceGate { in_wall: false, powered: true, facing: Direction::West, open: true }),
        (183, 14) => Some(Block::SpruceFenceGate { in_wall: false, powered: true, facing: Direction::North, open: true }),
        (183, 15) => Some(Block::SpruceFenceGate { in_wall: false, powered: true, facing: Direction::East, open: true }),
        (184, 0) => Some(Block::BirchFenceGate { in_wall: false, powered: false, facing: Direction::South, open: false }),
        (184, 1) => Some(Block::BirchFenceGate { in_wall: false, powered: false, facing: Direction::West, open: false }),
        (184, 2) => Some(Block::BirchFenceGate { in_wall: false, powered: false, facing: Direction::North, open: false }),
        (184, 3) => Some(Block::BirchFenceGate { in_wall: false, powered: false, facing: Direction::East, open: false }),
        (184, 4) => Some(Block::BirchFenceGate { in_wall: false, powered: false, facing: Direction::South, open: true }),
        (184, 5) => Some(Block::BirchFenceGate { in_wall: false, powered: false, facing: Direction::West, open: true }),
        (184, 6) => Some(Block::BirchFenceGate { in_wall: false, powered: false, facing: Direction::North, open: true }),
        (184, 7) => Some(Block::BirchFenceGate { in_wall: false, powered: false, facing: Direction::East, open: true }),
        (184, 8) => Some(Block::BirchFenceGate { in_wall: false, powered: true, facing: Direction::South, open: false }),
        (184, 9) => Some(Block::BirchFenceGate { in_wall: false, powered: true, facing: Direction::West, open: false }),
        (184, 10) => Some(Block::BirchFenceGate { in_wall: false, powered: true, facing: Direction::North, open: false }),
        (184, 11) => Some(Block::BirchFenceGate { in_wall: false, powered: true, facing: Direction::East, open: false }),
        (184, 12) => Some(Block::BirchFenceGate { in_wall: false, powered: true, facing: Direction::South, open: true }),
        (184, 13) => Some(Block::BirchFenceGate { in_wall: false, powered: true, facing: Direction::West, open: true }),
        (184, 14) => Some(Block::BirchFenceGate { in_wall: false, powered: true, facing: Direction::North, open: true }),
        (184, 15) => Some(Block::BirchFenceGate { in_wall: false, powered: true, facing: Direction::East, open: true }),
        (185, 0) => Some(Block::JungleFenceGate { in_wall: false, powered: false, facing: Direction::South, open: false }),
        (185, 1) => Some(Block::JungleFenceGate { in_wall: false, powered: false, facing: Direction::West, open: false }),
        (185, 2) => Some(Block::JungleFenceGate { in_wall: false, powered: false, facing: Direction::North, open: false }),
        (185, 3) => Some(Block::JungleFenceGate { in_wall: false, powered: false, facing: Direction::East, open: false }),
        (185, 4) => Some(Block::JungleFenceGate { in_wall: false, powered: false, facing: Direction::South, open: true }),
        (185, 5) => Some(Block::JungleFenceGate { in_wall: false, powered: false, facing: Direction::West, open: true }),
        (185, 6) => Some(Block::JungleFenceGate { in_wall: false, powered: false, facing: Direction::North, open: true }),
        (185, 7) => Some(Block::JungleFenceGate { in_wall: false, powered: false, facing: Direction::East, open: true }),
        (185, 8) => Some(Block::JungleFenceGate { in_wall: false, powered: true, facing: Direction::South, open: false }),
        (185, 9) => Some(Block::JungleFenceGate { in_wall: false, powered: true, facing: Direction::West, open: false }),
        (185, 10) => Some(Block::JungleFenceGate { in_wall: false, powered: true, facing: Direction::North, open: false }),
        (185, 11) => Some(Block::JungleFenceGate { in_wall: false, powered: true, facing: Direction::East, open: false }),
        (185, 12) => Some(Block::JungleFenceGate { in_wall: false, powered: true, facing: Direction::South, open: true }),
        (185, 13) => Some(Block::JungleFenceGate { in_wall: false, powered: true, facing: Direction::West, open: true }),
        (185, 14) => Some(Block::JungleFenceGate { in_wall: false, powered: true, facing: Direction::North, open: true }),
        (185, 15) => Some(Block::JungleFenceGate { in_wall: false, powered: true, facing: Direction::East, open: true }),
        (186, 0) => Some(Block::DarkOakFenceGate { in_wall: false, powered: false, facing: Direction::South, open: false }),
        (186, 1) => Some(Block::DarkOakFenceGate { in_wall: false, powered: false, facing: Direction::West, open: false }),
        (186, 2) => Some(Block::DarkOakFenceGate { in_wall: false, powered: false, facing: Direction::North, open: false }),
        (186, 3) => Some(Block::DarkOakFenceGate { in_wall: false, powered: false, facing: Direction::East, open: false }),
        (186, 4) => Some(Block::DarkOakFenceGate { in_wall: false, powered: false, facing: Direction::South, open: true }),
        (186, 5) => Some(Block::DarkOakFenceGate { in_wall: false, powered: false, facing: Direction::West, open: true }),
        (186, 6) => Some(Block::DarkOakFenceGate { in_wall: false, powered: false, facing: Direction::North, open: true }),
        (186, 7) => Some(Block::DarkOakFenceGate { in_wall: false, powered: false, facing: Direction::East, open: true }),
        (186, 8) => Some(Block::DarkOakFenceGate { in_wall: false, powered: true, facing: Direction::South, open: false }),
        (186, 9) => Some(Block::DarkOakFenceGate { in_wall: false, powered: true, facing: Direction::West, open: false }),
        (186, 10) => Some(Block::DarkOakFenceGate { in_wall: false, powered: true, facing: Direction::North, open: false }),
        (186, 11) => Some(Block::DarkOakFenceGate { in_wall: false, powered: true, facing: Direction::East, open: false }),
        (186, 12) => Some(Block::DarkOakFenceGate { in_wall: false, powered: true, facing: Direction::South, open: true }),
        (186, 13) => Some(Block::DarkOakFenceGate { in_wall: false, powered: true, facing: Direction::West, open: true }),
        (186, 14) => Some(Block::DarkOakFenceGate { in_wall: false, powered: true, facing: Direction::North, open: true }),
        (186, 15) => Some(Block::DarkOakFenceGate { in_wall: false, powered: true, facing: Direction::East, open: true }),
        (187, 0) => Some(Block::AcaciaFenceGate { in_wall: false, powered: false, facing: Direction::South, open: false }),
        (187, 1) => Some(Block::AcaciaFenceGate { in_wall: false, powered: false, facing: Direction::West, open: false }),
        (187, 2) => Some(Block::AcaciaFenceGate { in_wall: false, powered: false, facing: Direction::North, open: false }),
        (187, 3) => Some(Block::AcaciaFenceGate { in_wall: false, powered: false, facing: Direction::East, open: false }),
        (187, 4) => Some(Block::AcaciaFenceGate { in_wall: false, powered: false, facing: Direction::South, open: true }),
        (187, 5) => Some(Block::AcaciaFenceGate { in_wall: false, powered: false, facing: Direction::West, open: true }),
        (187, 6) => Some(Block::AcaciaFenceGate { in_wall: false, powered: false, facing: Direction::North, open: true }),
        (187, 7) => Some(Block::AcaciaFenceGate { in_wall: false, powered: false, facing: Direction::East, open: true }),
        (187, 8) => Some(Block::AcaciaFenceGate { in_wall: false, powered: true, facing: Direction::South, open: false }),
        (187, 9) => Some(Block::AcaciaFenceGate { in_wall: false, powered: true, facing: Direction::West, open: false }),
        (187, 10) => Some(Block::AcaciaFenceGate { in_wall: false, powered: true, facing: Direction::North, open: false }),
        (187, 11) => Some(Block::AcaciaFenceGate { in_wall: false, powered: true, facing: Direction::East, open: false }),
        (187, 12) => Some(Block::AcaciaFenceGate { in_wall: false, powered: true, facing: Direction::South, open: true }),
        (187, 13) => Some(Block::AcaciaFenceGate { in_wall: false, powered: true, facing: Direction::West, open: true }),
        (187, 14) => Some(Block::AcaciaFenceGate { in_wall: false, powered: true, facing: Direction::North, open: true }),
        (187, 15) => Some(Block::AcaciaFenceGate { in_wall: false, powered: true, facing: Direction::East, open: true }),
        (188, 0) => Some(Block::SpruceFence { east: false, south: false, north: false, west: false, waterlogged: false }),
        (189, 0) => Some(Block::BirchFence { east: false, south: false, north: false, west: false, waterlogged: false }),
        (190, 0) => Some(Block::JungleFence { east: false, south: false, north: false, west: false, waterlogged: false }),
        (191, 0) => Some(Block::DarkOakFence { east: false, south: false, north: false, west: false, waterlogged: false }),
        (192, 0) => Some(Block::AcaciaFence { east: false, south: false, north: false, west: false, waterlogged: false }),
        (193, 0) => Some(Block::SpruceDoor { hinge: Side::Right, half: DoorHalf::Lower, powered: false, facing: Direction::East, open: false }),
        (193, 1) => Some(Block::SpruceDoor { hinge: Side::Right, half: DoorHalf::Lower, powered: false, facing: Direction::South, open: false }),
        (193, 2) => Some(Block::SpruceDoor { hinge: Side::Right, half: DoorHalf::Lower, powered: false, facing: Direction::West, open: false }),
        (193, 3) => Some(Block::SpruceDoor { hinge: Side::Right, half: DoorHalf::Lower, powered: false, facing: Direction::North, open: false }),
        (193, 4) => Some(Block::SpruceDoor { hinge: Side::Right, half: DoorHalf::Lower, powered: false, facing: Direction::East, open: true }),
        (193, 5) => Some(Block::SpruceDoor { hinge: Side::Right, half: DoorHalf::Lower, powered: false, facing: Direction::South, open: true }),
        (193, 6) => Some(Block::SpruceDoor { hinge: Side::Right, half: DoorHalf::Lower, powered: false, facing: Direction::West, open: true }),
        (193, 7) => Some(Block::SpruceDoor { hinge: Side::Right, half: DoorHalf::Lower, powered: false, facing: Direction::North, open: true }),
        (193, 8) => Some(Block::SpruceDoor { hinge: Side::Left, half: DoorHalf::Upper, powered: false, facing: Direction::East, open: false }),
        (193, 9) => Some(Block::SpruceDoor { hinge: Side::Right, half: DoorHalf::Upper, powered: false, facing: Direction::East, open: false }),
        (193, 10) => Some(Block::SpruceDoor { hinge: Side::Left, half: DoorHalf::Upper, powered: true, facing: Direction::East, open: false }),
        (193, 11) => Some(Block::SpruceDoor { hinge: Side::Right, half: DoorHalf::Upper, powered: true, facing: Direction::East, open: false }),
        (194, 0) => Some(Block::BirchDoor { hinge: Side::Right, half: DoorHalf::Lower, powered: false, facing: Direction::East, open: false }),
        (194, 1) => Some(Block::BirchDoor { hinge: Side::Right, half: DoorHalf::Lower, powered: false, facing: Direction::South, open: false }),
        (194, 2) => Some(Block::BirchDoor { hinge: Side::Right, half: DoorHalf::Lower, powered: false, facing: Direction::West, open: false }),
        (194, 3) => Some(Block::BirchDoor { hinge: Side::Right, half: DoorHalf::Lower, powered: false, facing: Direction::North, open: false }),
        (194, 4) => Some(Block::BirchDoor { hinge: Side::Right, half: DoorHalf::Lower, powered: false, facing: Direction::East, open: true }),
        (194, 5) => Some(Block::BirchDoor { hinge: Side::Right, half: DoorHalf::Lower, powered: false, facing: Direction::South, open: true }),
        (194, 6) => Some(Block::BirchDoor { hinge: Side::Right, half: DoorHalf::Lower, powered: false, facing: Direction::West, open: true }),
        (194, 7) => Some(Block::BirchDoor { hinge: Side::Right, half: DoorHalf::Lower, powered: false, facing: Direction::North, open: true }),
        (194, 8) => Some(Block::BirchDoor { hinge: Side::Left, half: DoorHalf::Upper, powered: false, facing: Direction::East, open: false }),
        (194, 9) => Some(Block::BirchDoor { hinge: Side::Right, half: DoorHalf::Upper, powered: false, facing: Direction::East, open: false }),
        (194, 10) => Some(Block::BirchDoor { hinge: Side::Left, half: DoorHalf::Upper, powered: true, facing: Direction::East, open: false }),
        (194, 11) => Some(Block::BirchDoor { hinge: Side::Right, half: DoorHalf::Upper, powered: true, facing: Direction::East, open: false }),
        (195, 0) => Some(Block::JungleDoor { hinge: Side::Right, half: DoorHalf::Lower, powered: false, facing: Direction::East, open: false }),
        (195, 1) => Some(Block::JungleDoor { hinge: Side::Right, half: DoorHalf::Lower, powered: false, facing: Direction::South, open: false }),
        (195, 2) => Some(Block::JungleDoor { hinge: Side::Right, half: DoorHalf::Lower, powered: false, facing: Direction::West, open: false }),
        (195, 3) => Some(Block::JungleDoor { hinge: Side::Right, half: DoorHalf::Lower, powered: false, facing: Direction::North, open: false }),
        (195, 4) => Some(Block::JungleDoor { hinge: Side::Right, half: DoorHalf::Lower, powered: false, facing: Direction::East, open: true }),
        (195, 5) => Some(Block::JungleDoor { hinge: Side::Right, half: DoorHalf::Lower, powered: false, facing: Direction::South, open: true }),
        (195, 6) => Some(Block::JungleDoor { hinge: Side::Right, half: DoorHalf::Lower, powered: false, facing: Direction::West, open: true }),
        (195, 7) => Some(Block::JungleDoor { hinge: Side::Right, half: DoorHalf::Lower, powered: false, facing: Direction::North, open: true }),
        (195, 8) => Some(Block::JungleDoor { hinge: Side::Left, half: DoorHalf::Upper, powered: false, facing: Direction::East, open: false }),
        (195, 9) => Some(Block::JungleDoor { hinge: Side::Right, half: DoorHalf::Upper, powered: false, facing: Direction::East, open: false }),
        (195, 10) => Some(Block::JungleDoor { hinge: Side::Left, half: DoorHalf::Upper, powered: true, facing: Direction::East, open: false }),
        (195, 11) => Some(Block::JungleDoor { hinge: Side::Right, half: DoorHalf::Upper, powered: true, facing: Direction::East, open: false }),
        (196, 0) => Some(Block::AcaciaDoor { hinge: Side::Right, half: DoorHalf::Lower, powered: false, facing: Direction::East, open: false }),
        (196, 1) => Some(Block::AcaciaDoor { hinge: Side::Right, half: DoorHalf::Lower, powered: false, facing: Direction::South, open: false }),
        (196, 2) => Some(Block::AcaciaDoor { hinge: Side::Right, half: DoorHalf::Lower, powered: false, facing: Direction::West, open: false }),
        (196, 3) => Some(Block::AcaciaDoor { hinge: Side::Right, half: DoorHalf::Lower, powered: false, facing: Direction::North, open: false }),
        (196, 4) => Some(Block::AcaciaDoor { hinge: Side::Right, half: DoorHalf::Lower, powered: false, facing: Direction::East, open: true }),
        (196, 5) => Some(Block::AcaciaDoor { hinge: Side::Right, half: DoorHalf::Lower, powered: false, facing: Direction::South, open: true }),
        (196, 6) => Some(Block::AcaciaDoor { hinge: Side::Right, half: DoorHalf::Lower, powered: false, facing: Direction::West, open: true }),
        (196, 7) => Some(Block::AcaciaDoor { hinge: Side::Right, half: DoorHalf::Lower, powered: false, facing: Direction::North, open: true }),
        (196, 8) => Some(Block::AcaciaDoor { hinge: Side::Left, half: DoorHalf::Upper, powered: false, facing: Direction::East, open: false }),
        (196, 9) => Some(Block::AcaciaDoor { hinge: Side::Right, half: DoorHalf::Upper, powered: false, facing: Direction::East, open: false }),
        (196, 10) => Some(Block::AcaciaDoor { hinge: Side::Left, half: DoorHalf::Upper, powered: true, facing: Direction::East, open: false }),
        (196, 11) => Some(Block::AcaciaDoor { hinge: Side::Right, half: DoorHalf::Upper, powered: true, facing: Direction::East, open: false }),
        (197, 0) => Some(Block::DarkOakDoor { hinge: Side::Right, half: DoorHalf::Lower, powered: false, facing: Direction::East, open: false }),
        (197, 1) => Some(Block::DarkOakDoor { hinge: Side::Right, half: DoorHalf::Lower, powered: false, facing: Direction::South, open: false }),
        (197, 2) => Some(Block::DarkOakDoor { hinge: Side::Right, half: DoorHalf::Lower, powered: false, facing: Direction::West, open: false }),
        (197, 3) => Some(Block::DarkOakDoor { hinge: Side::Right, half: DoorHalf::Lower, powered: false, facing: Direction::North, open: false }),
        (197, 4) => Some(Block::DarkOakDoor { hinge: Side::Right, half: DoorHalf::Lower, powered: false, facing: Direction::East, open: true }),
        (197, 5) => Some(Block::DarkOakDoor { hinge: Side::Right, half: DoorHalf::Lower, powered: false, facing: Direction::South, open: true }),
        (197, 6) => Some(Block::DarkOakDoor { hinge: Side::Right, half: DoorHalf::Lower, powered: false, facing: Direction::West, open: true }),
        (197, 7) => Some(Block::DarkOakDoor { hinge: Side::Right, half: DoorHalf::Lower, powered: false, facing: Direction::North, open: true }),
        (197, 8) => Some(Block::DarkOakDoor { hinge: Side::Left, half: DoorHalf::Upper, powered: false, facing: Direction::East, open: false }),
        (197, 9) => Some(Block::DarkOakDoor { hinge: Side::Right, half: DoorHalf::Upper, powered: false, facing: Direction::East, open: false }),
        (197, 10) => Some(Block::DarkOakDoor { hinge: Side::Left, half: DoorHalf::Upper, powered: true, facing: Direction::East, open: false }),
        (197, 11) => Some(Block::DarkOakDoor { hinge: Side::Right, half: DoorHalf::Upper, powered: true, facing: Direction::East, open: false }),
        (198, 0) => Some(Block::EndRod { facing: Direction::Down }),
        (198, 1) => Some(Block::EndRod { facing: Direction::Up }),
        (198, 2) => Some(Block::EndRod { facing: Direction::North }),
        (198, 3) => Some(Block::EndRod { facing: Direction::South }),
        (198, 4) => Some(Block::EndRod { facing: Direction::West }),
        (198, 5) => Some(Block::EndRod { facing: Direction::East }),
        (199, 0) => Some(Block::ChorusPlant { east: false, south: false, north: false, west: false, up: false, down: false }),
        (200, 0..=5) => Some(Block::ChorusFlower { age: state }),
        (201, 0) => Some(Block::PurpurBlock {}),
        (202, 0) => Some(Block::PurpurPillar { axis: Axis::Y }),
        (202, 4) => Some(Block::PurpurPillar { axis: Axis::X }),
        (202, 8) => Some(Block::PurpurPillar { axis: Axis::Z }),
        (203, 0) => Some(Block::PurpurStairs { half: BlockHalf::Bottom, shape: StairShape::Straight, facing: Direction::East, waterlogged: false }),
        (203, 1) => Some(Block::PurpurStairs { half: BlockHalf::Bottom, shape: StairShape::Straight, facing: Direction::West, waterlogged: false }),
        (203, 2) => Some(Block::PurpurStairs { half: BlockHalf::Bottom, shape: StairShape::Straight, facing: Direction::South, waterlogged: false }),
        (203, 3) => Some(Block::PurpurStairs { half: BlockHalf::Bottom, shape: StairShape::Straight, facing: Direction::North, waterlogged: false }),
        (203, 4) => Some(Block::PurpurStairs { half: BlockHalf::Top, shape: StairShape::Straight, facing: Direction::East, waterlogged: false }),
        (203, 5) => Some(Block::PurpurStairs { half: BlockHalf::Top, shape: StairShape::Straight, facing: Direction::West, waterlogged: false }),
        (203, 6) => Some(Block::PurpurStairs { half: BlockHalf::Top, shape: StairShape::Straight, facing: Direction::South, waterlogged: false }),
        (203, 7) => Some(Block::PurpurStairs { half: BlockHalf::Top, shape: StairShape::Straight, facing: Direction::North, waterlogged: false }),
        (204, 0) => Some(Block::PurpurSlab { type_: BlockHalf::Double, waterlogged: false }),
        (205, 0) => Some(Block::PurpurSlab { type_: BlockHalf::Bottom, waterlogged: false }),
        (205, 8) => Some(Block::PurpurSlab { type_: BlockHalf::Top, waterlogged: false }),
        (206, 0) => Some(Block::EndStoneBricks {}),
        (207, 0..=3) => Some(Block::Beetroots { age: state }),
        (208, 0) => Some(Block::DirtPath {}),
        (209, 0) => Some(Block::EndGateway {}),
        (210, 0) => Some(Block::RepeatingCommandBlock { conditional: false, facing: Direction::Down }),
        (210, 1) => Some(Block::RepeatingCommandBlock { conditional: false, facing: Direction::Up }),
        (210, 2) => Some(Block::RepeatingCommandBlock { conditional: false, facing: Direction::North }),
        (210, 3) => Some(Block::RepeatingCommandBlock { conditional: false, facing: Direction::South }),
        (210, 4) => Some(Block::RepeatingCommandBlock { conditional: false, facing: Direction::West }),
        (210, 5) => Some(Block::RepeatingCommandBlock { conditional: false, facing: Direction::East }),
        (210, 8) => Some(Block::RepeatingCommandBlock { conditional: true, facing: Direction::Down }),
        (210, 9) => Some(Block::RepeatingCommandBlock { conditional: true, facing: Direction::Up }),
        (210, 10) => Some(Block::RepeatingCommandBlock { conditional: true, facing: Direction::North }),
        (210, 11) => Some(Block::RepeatingCommandBlock { conditional: true, facing: Direction::South }),
        (210, 12) => Some(Block::RepeatingCommandBlock { conditional: true, facing: Direction::West }),
        (210, 13) => Some(Block::RepeatingCommandBlock { conditional: true, facing: Direction::East }),
        (211, 0) => Some(Block::ChainCommandBlock { conditional: false, facing: Direction::Down }),
        (211, 1) => Some(Block::ChainCommandBlock { conditional: false, facing: Direction::Up }),
        (211, 2) => Some(Block::ChainCommandBlock { conditional: false, facing: Direction::North }),
        (211, 3) => Some(Block::ChainCommandBlock { conditional: false, facing: Direction::South }),
        (211, 4) => Some(Block::ChainCommandBlock { conditional: false, facing: Direction::West }),
        (211, 5) => Some(Block::ChainCommandBlock { conditional: false, facing: Direction::East }),
        (211, 8) => Some(Block::ChainCommandBlock { conditional: true, facing: Direction::Down }),
        (211, 9) => Some(Block::ChainCommandBlock { conditional: true, facing: Direction::Up }),
        (211, 10) => Some(Block::ChainCommandBlock { conditional: true, facing: Direction::North }),
        (211, 11) => Some(Block::ChainCommandBlock { conditional: true, facing: Direction::South }),
        (211, 12) => Some(Block::ChainCommandBlock { conditional: true, facing: Direction::West }),
        (211, 13) => Some(Block::ChainCommandBlock { conditional: true, facing: Direction::East }),
        (212, 0..=3) => Some(Block::FrostedIce { age: state }),
        (213, 0) => Some(Block::MagmaBlock {}),
        (214, 0) => Some(Block::NetherWartBlock {}),
        (215, 0) => Some(Block::RedNetherBricks {}),
        (216, 0) => Some(Block::BoneBlock { axis: Axis::Y }),
        (216, 4) => Some(Block::BoneBlock { axis: Axis::X }),
        (216, 8) => Some(Block::BoneBlock { axis: Axis::Z }),
        (217, 0) => Some(Block::StructureVoid {}),
        (218, 0) => Some(Block::Observer { powered: false, facing: Direction::Down }),
        (218, 1) => Some(Block::Observer { powered: false, facing: Direction::Up }),
        (218, 2) => Some(Block::Observer { powered: false, facing: Direction::North }),
        (218, 3) => Some(Block::Observer { powered: false, facing: Direction::South }),
        (218, 4) => Some(Block::Observer { powered: false, facing: Direction::West }),
        (218, 5) => Some(Block::Observer { powered: false, facing: Direction::East }),
        (218, 8) => Some(Block::Observer { powered: true, facing: Direction::Down }),
        (218, 9) => Some(Block::Observer { powered: true, facing: Direction::Up }),
        (218, 10) => Some(Block::Observer { powered: true, facing: Direction::North }),
        (218, 11) => Some(Block::Observer { powered: true, facing: Direction::South }),
        (218, 12) => Some(Block::Observer { powered: true, facing: Direction::West }),
        (218, 13) => Some(Block::Observer { powered: true, facing: Direction::East }),
        (219, 0) => Some(Block::WhiteShulkerBox { facing: Direction::Down }),
        (219, 1) => Some(Block::WhiteShulkerBox { facing: Direction::Up }),
        (219, 2) => Some(Block::WhiteShulkerBox { facing: Direction::North }),
        (219, 3) => Some(Block::WhiteShulkerBox { facing: Direction::South }),
        (219, 4) => Some(Block::WhiteShulkerBox { facing: Direction::West }),
        (219, 5) => Some(Block::WhiteShulkerBox { facing: Direction::East }),
        (220, 0) => Some(Block::OrangeShulkerBox { facing: Direction::Down }),
        (220, 1) => Some(Block::OrangeShulkerBox { facing: Direction::Up }),
        (220, 2) => Some(Block::OrangeShulkerBox { facing: Direction::North }),
        (220, 3) => Some(Block::OrangeShulkerBox { facing: Direction::South }),
        (220, 4) => Some(Block::OrangeShulkerBox { facing: Direction::West }),
        (220, 5) => Some(Block::OrangeShulkerBox { facing: Direction::East }),
        (221, 0) => Some(Block::MagentaShulkerBox { facing: Direction::Down }),
        (221, 1) => Some(Block::MagentaShulkerBox { facing: Direction::Up }),
        (221, 2) => Some(Block::MagentaShulkerBox { facing: Direction::North }),
        (221, 3) => Some(Block::MagentaShulkerBox { facing: Direction::South }),
        (221, 4) => Some(Block::MagentaShulkerBox { facing: Direction::West }),
        (221, 5) => Some(Block::MagentaShulkerBox { facing: Direction::East }),
        (222, 0) => Some(Block::LightBlueShulkerBox { facing: Direction::Down }),
        (222, 1) => Some(Block::LightBlueShulkerBox { facing: Direction::Up }),
        (222, 2) => Some(Block::LightBlueShulkerBox { facing: Direction::North }),
        (222, 3) => Some(Block::LightBlueShulkerBox { facing: Direction::South }),
        (222, 4) => Some(Block::LightBlueShulkerBox { facing: Direction::West }),
        (222, 5) => Some(Block::LightBlueShulkerBox { facing: Direction::East }),
        (223, 0) => Some(Block::YellowShulkerBox { facing: Direction::Down }),
        (223, 1) => Some(Block::YellowShulkerBox { facing: Direction::Up }),
        (223, 2) => Some(Block::YellowShulkerBox { facing: Direction::North }),
        (223, 3) => Some(Block::YellowShulkerBox { facing: Direction::South }),
        (223, 4) => Some(Block::YellowShulkerBox { facing: Direction::West }),
        (223, 5) => Some(Block::YellowShulkerBox { facing: Direction::East }),
        (224, 0) => Some(Block::LimeShulkerBox { facing: Direction::Down }),
        (224, 1) => Some(Block::LimeShulkerBox { facing: Direction::Up }),
        (224, 2) => Some(Block::LimeShulkerBox { facing: Direction::North }),
        (224, 3) => Some(Block::LimeShulkerBox { facing: Direction::South }),
        (224, 4) => Some(Block::LimeShulkerBox { facing: Direction::West }),
        (224, 5) => Some(Block::LimeShulkerBox { facing: Direction::East }),
        (225, 0) => Some(Block::PinkShulkerBox { facing: Direction::Down }),
        (225, 1) => Some(Block::PinkShulkerBox { facing: Direction::Up }),
        (225, 2) => Some(Block::PinkShulkerBox { facing: Direction::North }),
        (225, 3) => Some(Block::PinkShulkerBox { facing: Direction::South }),
        (225, 4) => Some(Block::PinkShulkerBox { facing: Direction::West }),
        (225, 5) => Some(Block::PinkShulkerBox { facing: Direction::East }),
        (226, 0) => Some(Block::GrayShulkerBox { facing: Direction::Down }),
        (226, 1) => Some(Block::GrayShulkerBox { facing: Direction::Up }),
        (226, 2) => Some(Block::GrayShulkerBox { facing: Direction::North }),
        (226, 3) => Some(Block::GrayShulkerBox { facing: Direction::South }),
        (226, 4) => Some(Block::GrayShulkerBox { facing: Direction::West }),
        (226, 5) => Some(Block::GrayShulkerBox { facing: Direction::East }),
        (227, 0) => Some(Block::LightGrayShulkerBox { facing: Direction::Down }),
        (227, 1) => Some(Block::LightGrayShulkerBox { facing: Direction::Up }),
        (227, 2) => Some(Block::LightGrayShulkerBox { facing: Direction::North }),
        (227, 3) => Some(Block::LightGrayShulkerBox { facing: Direction::South }),
        (227, 4) => Some(Block::LightGrayShulkerBox { facing: Direction::West }),
        (227, 5) => Some(Block::LightGrayShulkerBox { facing: Direction::East }),
        (228, 0) => Some(Block::CyanShulkerBox { facing: Direction::Down }),
        (228, 1) => Some(Block::CyanShulkerBox { facing: Direction::Up }),
        (228, 2) => Some(Block::CyanShulkerBox { facing: Direction::North }),
        (228, 3) => Some(Block::CyanShulkerBox { facing: Direction::South }),
        (228, 4) => Some(Block::CyanShulkerBox { facing: Direction::West }),
        (228, 5) => Some(Block::CyanShulkerBox { facing: Direction::East }),
        (229, 0) => Some(Block::PurpleShulkerBox { facing: Direction::Down }),
        (229, 1) => Some(Block::PurpleShulkerBox { facing: Direction::Up }),
        (229, 2) => Some(Block::PurpleShulkerBox { facing: Direction::North }),
        (229, 3) => Some(Block::PurpleShulkerBox { facing: Direction::South }),
        (229, 4) => Some(Block::PurpleShulkerBox { facing: Direction::West }),
        (229, 5) => Some(Block::PurpleShulkerBox { facing: Direction::East }),
        (230, 0) => Some(Block::BlueShulkerBox { facing: Direction::Down }),
        (230, 1) => Some(Block::BlueShulkerBox { facing: Direction::Up }),
        (230, 2) => Some(Block::BlueShulkerBox { facing: Direction::North }),
        (230, 3) => Some(Block::BlueShulkerBox { facing: Direction::South }),
        (230, 4) => Some(Block::BlueShulkerBox { facing: Direction::West }),
        (230, 5) => Some(Block::BlueShulkerBox { facing: Direction::East }),
        (231, 0) => Some(Block::BrownShulkerBox { facing: Direction::Down }),
        (231, 1) => Some(Block::BrownShulkerBox { facing: Direction::Up }),
        (231, 2) => Some(Block::BrownShulkerBox { facing: Direction::North }),
        (231, 3) => Some(Block::BrownShulkerBox { facing: Direction::South }),
        (231, 4) => Some(Block::BrownShulkerBox { facing: Direction::West }),
        (231, 5) => Some(Block::BrownShulkerBox { facing: Direction::East }),
        (232, 0) => Some(Block::GreenShulkerBox { facing: Direction::Down }),
        (232, 1) => Some(Block::GreenShulkerBox { facing: Direction::Up }),
        (232, 2) => Some(Block::GreenShulkerBox { facing: Direction::North }),
        (232, 3) => Some(Block::GreenShulkerBox { facing: Direction::South }),
        (232, 4) => Some(Block::GreenShulkerBox { facing: Direction::West }),
        (232, 5) => Some(Block::GreenShulkerBox { facing: Direction::East }),
        (233, 0) => Some(Block::RedShulkerBox { facing: Direction::Down }),
        (233, 1) => Some(Block::RedShulkerBox { facing: Direction::Up }),
        (233, 2) => Some(Block::RedShulkerBox { facing: Direction::North }),
        (233, 3) => Some(Block::RedShulkerBox { facing: Direction::South }),
        (233, 4) => Some(Block::RedShulkerBox { facing: Direction::West }),
        (233, 5) => Some(Block::RedShulkerBox { facing: Direction::East }),
        (234, 0) => Some(Block::BlackShulkerBox { facing: Direction::Down }),
        (234, 1) => Some(Block::BlackShulkerBox { facing: Direction::Up }),
        (234, 2) => Some(Block::BlackShulkerBox { facing: Direction::North }),
        (234, 3) => Some(Block::BlackShulkerBox { facing: Direction::South }),
        (234, 4) => Some(Block::BlackShulkerBox { facing: Direction::West }),
        (234, 5) => Some(Block::BlackShulkerBox { facing: Direction::East }),
        (235, 0) => Some(Block::WhiteGlazedTerracotta { facing: Direction::South }),
        (235, 1) => Some(Block::WhiteGlazedTerracotta { facing: Direction::West }),
        (235, 2) => Some(Block::WhiteGlazedTerracotta { facing: Direction::North }),
        (235, 3) => Some(Block::WhiteGlazedTerracotta { facing: Direction::East }),
        (236, 0) => Some(Block::OrangeGlazedTerracotta { facing: Direction::South }),
        (236, 1) => Some(Block::OrangeGlazedTerracotta { facing: Direction::West }),
        (236, 2) => Some(Block::OrangeGlazedTerracotta { facing: Direction::North }),
        (236, 3) => Some(Block::OrangeGlazedTerracotta { facing: Direction::East }),
        (237, 0) => Some(Block::MagentaGlazedTerracotta { facing: Direction::South }),
        (237, 1) => Some(Block::MagentaGlazedTerracotta { facing: Direction::West }),
        (237, 2) => Some(Block::MagentaGlazedTerracotta { facing: Direction::North }),
        (237, 3) => Some(Block::MagentaGlazedTerracotta { facing: Direction::East }),
        (238, 0) => Some(Block::LightBlueGlazedTerracotta { facing: Direction::South }),
        (238, 1) => Some(Block::LightBlueGlazedTerracotta { facing: Direction::West }),
        (238, 2) => Some(Block::LightBlueGlazedTerracotta { facing: Direction::North }),
        (238, 3) => Some(Block::LightBlueGlazedTerracotta { facing: Direction::East }),
        (239, 0) => Some(Block::YellowGlazedTerracotta { facing: Direction::South }),
        (239, 1) => Some(Block::YellowGlazedTerracotta { facing: Direction::West }),
        (239, 2) => Some(Block::YellowGlazedTerracotta { facing: Direction::North }),
        (239, 3) => Some(Block::YellowGlazedTerracotta { facing: Direction::East }),
        (240, 0) => Some(Block::LimeGlazedTerracotta { facing: Direction::South }),
        (240, 1) => Some(Block::LimeGlazedTerracotta { facing: Direction::West }),
        (240, 2) => Some(Block::LimeGlazedTerracotta { facing: Direction::North }),
        (240, 3) => Some(Block::LimeGlazedTerracotta { facing: Direction::East }),
        (241, 0) => Some(Block::PinkGlazedTerracotta { facing: Direction::South }),
        (241, 1) => Some(Block::PinkGlazedTerracotta { facing: Direction::West }),
        (241, 2) => Some(Block::PinkGlazedTerracotta { facing: Direction::North }),
        (241, 3) => Some(Block::PinkGlazedTerracotta { facing: Direction::East }),
        (242, 0) => Some(Block::GrayGlazedTerracotta { facing: Direction::South }),
        (242, 1) => Some(Block::GrayGlazedTerracotta { facing: Direction::West }),
        (242, 2) => Some(Block::GrayGlazedTerracotta { facing: Direction::North }),
        (242, 3) => Some(Block::GrayGlazedTerracotta { facing: Direction::East }),
        (243, 0) => Some(Block::LightGrayGlazedTerracotta { facing: Direction::South }),
        (243, 1) => Some(Block::LightGrayGlazedTerracotta { facing: Direction::West }),
        (243, 2) => Some(Block::LightGrayGlazedTerracotta { facing: Direction::North }),
        (243, 3) => Some(Block::LightGrayGlazedTerracotta { facing: Direction::East }),
        (244, 0) => Some(Block::CyanGlazedTerracotta { facing: Direction::South }),
        (244, 1) => Some(Block::CyanGlazedTerracotta { facing: Direction::West }),
        (244, 2) => Some(Block::CyanGlazedTerracotta { facing: Direction::North }),
        (244, 3) => Some(Block::CyanGlazedTerracotta { facing: Direction::East }),
        (245, 0) => Some(Block::PurpleGlazedTerracotta { facing: Direction::South }),
        (245, 1) => Some(Block::PurpleGlazedTerracotta { facing: Direction::West }),
        (245, 2) => Some(Block::PurpleGlazedTerracotta { facing: Direction::North }),
        (245, 3) => Some(Block::PurpleGlazedTerracotta { facing: Direction::East }),
        (246, 0) => Some(Block::BlueGlazedTerracotta { facing: Direction::South }),
        (246, 1) => Some(Block::BlueGlazedTerracotta { facing: Direction::West }),
        (246, 2) => Some(Block::BlueGlazedTerracotta { facing: Direction::North }),
        (246, 3) => Some(Block::BlueGlazedTerracotta { facing: Direction::East }),
        (247, 0) => Some(Block::BrownGlazedTerracotta { facing: Direction::South }),
        (247, 1) => Some(Block::BrownGlazedTerracotta { facing: Direction::West }),
        (247, 2) => Some(Block::BrownGlazedTerracotta { facing: Direction::North }),
        (247, 3) => Some(Block::BrownGlazedTerracotta { facing: Direction::East }),
        (248, 0) => Some(Block::GreenGlazedTerracotta { facing: Direction::South }),
        (248, 1) => Some(Block::GreenGlazedTerracotta { facing: Direction::West }),
        (248, 2) => Some(Block::GreenGlazedTerracotta { facing: Direction::North }),
        (248, 3) => Some(Block::GreenGlazedTerracotta { facing: Direction::East }),
        (249, 0) => Some(Block::RedGlazedTerracotta { facing: Direction::South }),
        (249, 1) => Some(Block::RedGlazedTerracotta { facing: Direction::West }),
        (249, 2) => Some(Block::RedGlazedTerracotta { facing: Direction::North }),
        (249, 3) => Some(Block::RedGlazedTerracotta { facing: Direction::East }),
        (250, 0) => Some(Block::BlackGlazedTerracotta { facing: Direction::South }),
        (250, 1) => Some(Block::BlackGlazedTerracotta { facing: Direction::West }),
        (250, 2) => Some(Block::BlackGlazedTerracotta { facing: Direction::North }),
        (250, 3) => Some(Block::BlackGlazedTerracotta { facing: Direction::East }),
        (251, 0) => Some(Block::WhiteConcrete {}),
        (251, 1) => Some(Block::OrangeConcrete {}),
        (251, 2) => Some(Block::MagentaConcrete {}),
        (251, 3) => Some(Block::LightBlueConcrete {}),
        (251, 4) => Some(Block::YellowConcrete {}),
        (251, 5) => Some(Block::LimeConcrete {}),
        (251, 6) => Some(Block::PinkConcrete {}),
        (251, 7) => Some(Block::GrayConcrete {}),
        (251, 8) => Some(Block::LightGrayConcrete {}),
        (251, 9) => Some(Block::CyanConcrete {}),
        (251, 10) => Some(Block::PurpleConcrete {}),
        (251, 11) => Some(Block::BlueConcrete {}),
        (251, 12) => Some(Block::BrownConcrete {}),
        (251, 13) => Some(Block::GreenConcrete {}),
        (251, 14) => Some(Block::RedConcrete {}),
        (251, 15) => Some(Block::BlackConcrete {}),
        (252, 0) => Some(Block::WhiteConcretePowder {}),
        (252, 1) => Some(Block::OrangeConcretePowder {}),
        (252, 2) => Some(Block::MagentaConcretePowder {}),
        (252, 3) => Some(Block::LightBlueConcretePowder {}),
        (252, 4) => Some(Block::YellowConcretePowder {}),
        (252, 5) => Some(Block::LimeConcretePowder {}),
        (252, 6) => Some(Block::PinkConcretePowder {}),
        (252, 7) => Some(Block::GrayConcretePowder {}),
        (252, 8) => Some(Block::LightGrayConcretePowder {}),
        (252, 9) => Some(Block::CyanConcretePowder {}),
        (252, 10) => Some(Block::PurpleConcretePowder {}),
        (252, 11) => Some(Block::BlueConcretePowder {}),
        (252, 12) => Some(Block::BrownConcretePowder {}),
        (252, 13) => Some(Block::GreenConcretePowder {}),
        (252, 14) => Some(Block::RedConcretePowder {}),
        (252, 15) => Some(Block::BlackConcretePowder {}),
        (255, 0) => Some(Block::StructureBlock { mode: StructureBlockMode::Save }),
        (255, 1) => Some(Block::StructureBlock { mode: StructureBlockMode::Load }),
        (255, 2) => Some(Block::StructureBlock { mode: StructureBlockMode::Corner }),
        (255, 3) => Some(Block::StructureBlock { mode: StructureBlockMode::Data }),
        _ => None,
    }
}
